|
本帖最后由 SCREA 于 2013-9-22 14:27 编辑
我用的ATMEGA16.- void SPI_WriteByte(unsigned char dat)//通过SPI发送一个字节的数据
- {
- SPDR = dat;
- while((SPSR & (1<<SPIF))==0);
- }
- unsigned char SPI_ReadByte(void)//通过SPI读取一个字节的数据
- {
- SPI_WriteByte(0xff);//移8个脉冲,不一定是0xff,任意值都行
- return (SPDR);
- }
- /*********************************************************************
- 名称:写VS1003B寄存器
- 描述:
- 功能:
- 返回值:
- 输入值:地址和数据
- *********************************************************************/
- void VS1003B_WriteCMD(unsigned char addr, unsigned int dat)
- {
- DREQbit();//检测DREQ是否忙
-
- VS1003B_XDCS_H();
- VS1003B_XCS_L();
- put_char(3);
- SPI_WriteByte(2);//写入0x02
- put_char(4);
- put_char(SPI_WR(addr));//寄存器地址
- put_char(5); [color=Red] // 执行到此处会打印5,但是4就卡住了[/color]
- SPI_WriteByte(dat>>8);//高8位
- SPI_WriteByte(dat);//低8位
- VS1003B_XCS_H();
- }
复制代码 ===================================================================================
我的驱动VS1003时遇到一个问题:先写入CMD,在写入地址时,就会卡在地址那不动。无法得到返回值,更不能继续下一步写入写入数据
正常情况会打印出5,但是4那就卡住了
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|