关于s08qg8spi读93c46问题

[复制链接]
2735|1
 楼主| xuhuadong 发表于 2007-6-29 13:15 | 显示全部楼层 |阅读模式
用qg8的内部spi模块读取spi接口的93c46eeprom时16位时,采用查询方式,发现输出波形正常,<br /><br />但是接受寄存器会把93c46发出的第一个零位放入spid中,请教高手如何解释。<br /><br />需要接受3个字节一位后才能是正确的数据。并且,无论在发送或接受spid一放数,就会置位SPIS_SPRF<br /><br />unsigned&nbsp;char&nbsp;rebuff1,rebuff2,rebuff3;<br /><br /><br />&nbsp;b_cs=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//93c46使能<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yanshi();&nbsp;&nbsp;&nbsp;//延时<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPID=0X01;&nbsp;&nbsp;//高7位补齐脉冲<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!SPIS_SPTEF);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rebuff1=SPID;&nbsp;//清除标志<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPID=0X80;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;低六位为读取9346的地址&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!SPIS_SPTEF);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPID=0X00;&nbsp;&nbsp;&nbsp;&nbsp;//产生时钟&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!SPIS_SPTEF);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rebuff1=SPID;&nbsp;&nbsp;&nbsp;//<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!SPIS_SPRF)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rebuff1=SPID;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPID=0X00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//产生时钟&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!SPIS_SPTEF);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rebuff1=SPID;&nbsp;&nbsp;&nbsp;//读取高字节,????最高位为0,实际为1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!SPIS_SPRF)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rebuff2=SPID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPID=0X00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//产生时钟<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!SPIS_SPTEF);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rebuff2=SPID;&nbsp;&nbsp;&nbsp;//读取低字节,????最高位为高字节零位,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!SPIS_SPRF);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rebuff3=SPID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPID=0X00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//产生时钟<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(!SPIS_SPTEF);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rebuff3=SPID;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;????最高位为低字节零位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SPIC1=0X00;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yanshi();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yanshi();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yanshi();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yanshi();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yanshi();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_cs=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yanshi();<br /><br />}<br /><br />&nbsp;void&nbsp;yanshi(void){<br />unsigned&nbsp;char&nbsp;i;<br /><br />for(i=0;i&lt10;i++)__RESET_WATCHDOG();<br />}<br />
FREETECH_S 发表于 2007-7-4 17:00 | 显示全部楼层

spi总线有四种工作方式,

spi总线有四种工作方式,这个现象就是没有设对工作方式,93c46应该是设置成spi1方式
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

134

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部