返回列表 发新帖

紧急求助AT91SAM9261 SPI驱动问题

[复制链接]

11

主题

47

帖子

0

积分

一年级

积分
0
发表于 2009-9-8 18:52:47 | 显示全部楼层 | 阅读模式
<p>用AT91SAM9261的官方wince 6.0 BSP中的SPI驱动IOCTL_SPI_TRANSACTION时候和外接的单片机通信时候</p><p>在</p><p><font color="#ff0000"> U16 RxBuffer[200]={0,0};<br/> U16 TxBuffer[200]={0,0};</font><br/> SpiTransaction.pTxBuffer = TxBuffer;<br/> SpiTransaction.pRxBuffer = RxBuffer;<br/><font color="#ff0000"> SpiTransaction.dwSize    = 200; // total transfer size, in words (SPI is configured in 16b)</font></p><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3"></font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" color="#ff0000" size="3"> U16 RxBuffer[2]={0,0};<br/> U16 TxBuffer[2]={0,0};<br/><font color="#000000"> SpiTransaction.pTxBuffer = TxBuffer;<br/> SpiTransaction.pRxBuffer = RxBuffer;</font><br/> SpiTransaction.dwSize    = 2; // total transfer size, in words (SPI is configured in 16b)</font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3"></font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3"></font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">我近段时间一直在测试SPI驱动,发现一些问题:</font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">1.当发送的字节数为1个或者2个时,可以正常通讯.</font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">2.当通讯的字节数小于260个时,主机9261可以接收到从机单片机的所有数据,但是数据有规律的移位了,</font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">   如:需要通讯200个字节,9261发送200个Clock,单片机返回数据{0x00,0x01,0x02,0x03,0x04,0x05........0x195,0x196,0x197,0x198,0x199},</font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">   但是9261实际接收的数据为{0x198,0x199,0x00,0x01,0x02,0x03,0x04,0x05........0x195,0x196,0x197},这种移位比较有规律,即发送数据</font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">   的最后两个字节填到buffer的前两个字节上了.应该是buffer填充的时候有bug,问题不大.</font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">3.</font></span><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">当通讯的字节数大于270个时,</font></span><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3"> 主机接收到的数据都是一些固定的数据,这时整个buffer只能接收到一些固定的数据,如9261发送270个clock</font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">   单片机返回{0x00,0x01,0x02,0x03,0x04,0x05,0x06.........0xff,0x00,0x01,0x02,0x03,0x04,0x05,0x06...}共270个数据,但是实际9261接收到的数据为一些固定的数据,即</font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">    {<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman';"><strong>0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0x10 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0x10 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0x10 0x1........</strong></span>}即只有1~10的数据,后面的数据都没了,</font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">   并且只要通讯数据大于270,都是这种现象,数据都是{<strong>0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0x10 </strong>}的重复.</font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3"></font></span></div><div class="EC_EC_EC_MsoNormal" align="left" style="LINE-HEIGHT: 12pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 'Comic Sans MS';"><font face="Times New Roman" size="3">有谁遇到同样的问题没,是不是9261芯片本身的Bug,还是官方的驱动存在问题。</font></span></div>
回复

使用道具 举报

11

主题

47

帖子

0

积分

一年级

积分
0
发表于 2009-9-9 10:18:28 | 显示全部楼层
知道的回个帖啊
回复 支持 反对

使用道具 举报

发表回复

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

本版积分规则

快速回复 返回顶部 返回列表