张先生,毫无钻牛角之意,即然你说是简单顺序错误,那么请指

[复制链接]
3253|2
 楼主| jatkai 发表于 2008-11-29 14:00 | 显示全部楼层 |阅读模式
<img src="http://D:MyTempMYSelfSPI时序.bmp">&nbsp;<br /><br />毫无钻牛之意!张先生!请帮忙看下代码,附上图说明.请帮指出错误&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*初始化SPI&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CS&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPI1C1&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI1C2&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;//--------------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BUSclk&nbsp;=&nbsp;4MHz<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SPIClk&nbsp;=&nbsp;4M/2/2&nbsp;=&nbsp;1MHz<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI1BR&nbsp;=&nbsp;0x10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//--------------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SPE&nbsp;=&nbsp;1&nbsp;使用SPI接口<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;MSTR&nbsp;=&nbsp;1&nbsp;SPI为主模式<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CPHA=0,CPOL=0&nbsp;时钟线平常为低电平,接收数据时在SPICLK的上<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;升沿读取数据<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;LSBFE=1,低位先传&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI1C1&nbsp;=&nbsp;0x51;<br />&nbsp;&nbsp;&nbsp;&nbsp;(void)(SPI1S&nbsp;==&nbsp;0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CS&nbsp;=&nbsp;1;<br /><br /><br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*向SPI发送数据&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;CS&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//temp&nbsp;=&nbsp;SPI1S;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!SPI1S_SPTEF);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI1D&nbsp;=&nbsp;port;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!SPI1S_SPTEF);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//temp&nbsp;=&nbsp;SPI1S;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI1D&nbsp;=&nbsp;sendData;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!SPI1S_SPTEF);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CS&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;此刻SPIEF已为1,如果置高CS那么如图所示.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;数据还没有完全发送完,CS就变为高电平<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />
张明峰 发表于 2008-11-29 23:06 | 显示全部楼层

试试

写一小段子程序如下:<br /><br />//==============================================================<br />//&nbsp;Byte&nbsp;in/out&nbsp;through&nbsp;SPI&nbsp;port<br />//&nbsp;Input:&nbsp;&nbsp;data&nbsp;byte&nbsp;to&nbsp;be&nbsp;sent&nbsp;out<br />//&nbsp;return:&nbsp;data&nbsp;byte&nbsp;received<br />//==============================================================<br />byte&nbsp;SPI_DataComm(byte&nbsp;outDat)<br />{<br />&nbsp;&nbsp;&nbsp;while&nbsp;(!SPI1S_SPTEF);<br />&nbsp;&nbsp;&nbsp;SPI1D&nbsp;=&nbsp;outDat;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;while&nbsp;(!SPI1S_SPRF);<br />&nbsp;&nbsp;&nbsp;return&nbsp;(SPI1D);<br />}<br /><br />你的代码修改如下:<br /><br />&nbsp;&nbsp;/*初始化SPI&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CS&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPI1C1&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI1C2&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;//--------------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BUSclk&nbsp;=&nbsp;4MHz<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SPIClk&nbsp;=&nbsp;4M/2/2&nbsp;=&nbsp;1MHz<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI1BR&nbsp;=&nbsp;0x10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//--------------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SPE&nbsp;=&nbsp;1&nbsp;使用SPI接口<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;MSTR&nbsp;=&nbsp;1&nbsp;SPI为主模式<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CPHA=0,CPOL=0&nbsp;时钟线平常为低电平,接收数据时在SPICLK的上<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;升沿读取数据<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;LSBFE=1,低位先传&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI1C1&nbsp;=&nbsp;0x51;<br />&nbsp;&nbsp;&nbsp;&nbsp;(void)(SPI1S&nbsp;==&nbsp;0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CS&nbsp;=&nbsp;1;<br /><br /><br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*向SPI发送数据&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;CS&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<font color=#0000FF><br />&nbsp;&nbsp;&nbsp;&nbsp;SPI_DataComm(port);<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI_DataComm(sendData);<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CS&nbsp;=&nbsp;1;
 楼主| jatkai 发表于 2008-11-30 11:11 | 显示全部楼层

非常感谢!

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

36

帖子

0

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