376初始化问题

[Emot]1[/Emot]采用模拟SPI方式控制SD卡,根据硬件对相应的IO进行设置,WR#,RD#接地其余空悬。确认硬件联系连接酶问题。但是却连初始化都不行,返回的一直都是0xff;

void main( void ) { UINT8 i;

//mDelay_50mS( ); //mDelay_50mS( );

Uart_Init( ); //串口初始化 CH376_PORT_INIT(); printf("start \n"); xWriteCH376Cmd(CMD11_CHECK_EXIST); //做测试命令,检测硬件连接,以及接口程序是否正确。 xWriteCH376Data(0x55); i = xReadCH376Data( ); //正常应该返回0xaa xEndCH376Cmd(); printf("%02x \n",(UINT16)i);

xWriteCH376Cmd(CMD11_SET_USB_MODE);//设置USB的内置固件,设备模式 xWriteCH376Data( 2 ); for(i=50;i!=0;i--) { if(xReadCH376Data( ) == CMD_RET_SUCCESS) break; //如果模式设置成功,则返回CMD_RET_SUCCESS } xEndCH376Cmd(); while(1) { if(Query376Interrupt() != 0 ) CH376_INT_TRANS( ); } }

相应的程序如上,调用了官方的程序。小弟十分想不明白。希望各位高手指点一二。 可以的话,能否发个51模拟SPI的读写SD卡的程序呢。邮箱:个人信息保护,已隐藏

在网站上下载CH376EVT.ZIP,参考里面的SPI_SW里面的读写函数,操作SD卡的时候只需要将模式设置成0x03模式即可,除了检测U盘连接的命令和对扇区读写的命令不支持SD卡外,其他的命令都是兼容的。


你好,我下载了。操作SD卡的模式是否是下面这段 void CH376_PORT_INIT( void ) /* 由于使用软件模拟SPI读写时序,所以进行初始化 */ { /* 如果是硬件SPI接口,那么可使用mode3(CPOL=1&CPHA=1)或mode0(CPOL=0&CPHA=0),CH376在时钟上升沿采样输入,下降沿输出,数据位是高位在前 */ CH376_SPI_SCS = 1; /* 禁止SPI片选 */ CH376_SPI_SCK = 1; /* 默认为高电平,SPI模式3,也可以用SPI模式0,但模拟程序可能需稍做修改 */ /* 对于双向I/O引脚模拟SPI接口,那么必须在此设置SPI_SCS,SPI_SCK,SPI_SDI为输出方向,SPI_SDO为输入方向 */ }


我直接就调用了上面的模拟SPI的程序,延时根据我采用的是22.1184mhz晶振,在初始化376的时候返回的一直都是FF,程序改了N次。实在不懂了


哦,你说的设置模式是用CMD_RET_SUCCESS设置的吧。可惜我连对376初始都不通过


直接就调用了上面的模拟SPI的程序?你看看IO是否和你连接的一样。 下载这个程序你参考一下程序是怎么写的,根据自己的硬件进行移植


IO口我已经改了,模拟SPI的是直接调用那个ch376evt中的。程序我看过该改的我都改了。但是就是初始化不过,自己写了也是一样。我就十分纠结。


初始化完成了。谢谢两位。接下来有什么问题,在向两位大侠请教


只有登录才能回复,可以选择微信账号登录