SH4串口发送数据的奇怪问题

[复制链接]
2563|1
 楼主| 王培1 发表于 2009-7-16 11:48 | 显示全部楼层 |阅读模式
小生SH4做个DD,用串口发送数据,数据放在txBuff[0-16]中,当我这样发送的时候<br />&nbsp;&nbsp;txBuff[0]&nbsp;=&nbsp;0x3a;<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[1]&nbsp;=&nbsp;0x07;<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[2]&nbsp;=&nbsp;(unsigned&nbsp;char)ReadData[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[3]&nbsp;=&nbsp;(unsigned&nbsp;char)ReadData[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[4]&nbsp;=&nbsp;(unsigned&nbsp;char)ReadData[2];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[5]&nbsp;=&nbsp;(unsigned&nbsp;char)ReadData[3];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[6]&nbsp;=&nbsp;(unsigned&nbsp;char)ReadData[4];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[7]&nbsp;=&nbsp;(unsigned&nbsp;char)ReadData[5];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[8]&nbsp;=&nbsp;(unsigned&nbsp;char)ReadData[6];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[9]&nbsp;=&nbsp;&nbsp;(unsigned&nbsp;char)DataBuff2[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[10]&nbsp;=&nbsp;(unsigned&nbsp;char)DataBuff2[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[11]&nbsp;=&nbsp;(unsigned&nbsp;char)DataBuff2[2];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[12]&nbsp;=&nbsp;(unsigned&nbsp;char)DataBuff2[3];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[13]&nbsp;=&nbsp;(unsigned&nbsp;char)DataBuff2[4];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[14]&nbsp;=&nbsp;(unsigned&nbsp;char)DataBuff2[5];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[15]&nbsp;=&nbsp;(unsigned&nbsp;char)DataBuff2[6];<br />&nbsp;&nbsp;&nbsp;&nbsp;txBuff[16]&nbsp;=&nbsp;(unsigned&nbsp;char)(txBuff[0]&nbsp;^&nbsp;txBuff[1]&nbsp;^&nbsp;txBuff[2]&nbsp;^&nbsp;txBuff[3]<br />&nbsp;&nbsp;&nbsp;&nbsp;^&nbsp;txBuff[4]&nbsp;^&nbsp;txBuff[5]&nbsp;^&nbsp;txBuff[6]&nbsp;^&nbsp;txBuff[7]&nbsp;^&nbsp;txBuff[8]&nbsp;&nbsp;^&nbsp;txBuff[9]<br />&nbsp;&nbsp;&nbsp;&nbsp;^&nbsp;txBuff[10]&nbsp;^&nbsp;txBuff[11]&nbsp;^&nbsp;txBuff[12]&nbsp;^&nbsp;txBuff[13]&nbsp;^&nbsp;txBuff[14]&nbsp;^&nbsp;txBuff[15]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i&lt&nbsp;17;&nbsp;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TERMIO_PutChar((unsigned&nbsp;char)txBuff);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />用串口调试工具接收到的数据居然是txBuff[15]&nbsp;txBuff[16]&nbsp;txBuff[0]....txBuff[14],奇怪的是为什么txBuff[15]&nbsp;txBuff[16],会在最前面,如果for(i=0;&nbsp;i&lt&nbsp;17;&nbsp;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TERMIO_PutChar((unsigned&nbsp;char)txBuff);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />后面+个NOP,在这个NOP设置个断点,每次发送又是好的,顺序是对的从txBuff[0]....txBuff[16],那位高手能回答一下吗?<br />我的串口初始化<br />void&nbsp;InitUart(void)&nbsp;{<br />&nbsp;&nbsp;/*&nbsp;###&nbsp;Init_SCI&nbsp;init&nbsp;code&nbsp;*/<br />//Baud&nbsp;rate&nbsp;=&nbsp;BUSCLK&nbsp;/&nbsp;(16&nbsp;x&nbsp;SBR12:SBR0)<br />&nbsp;&nbsp;/*&nbsp;SCIBD:&nbsp;SBR12=0,SBR11=0,SBR10=0,SBR9=0,SBR8=0,SBR7=0,SBR6=0,SBR5=0,SBR4=1,SBR3=1,SBR2=0,SBR1=1,SBR0=0&nbsp;*/<br />&nbsp;&nbsp;SCIBD&nbsp;=&nbsp;BUSCLK/16/SciBandRate;&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;SCIC1:&nbsp;LOOPS=0,SCISWAI=0,RSRC=0,M=0,WAKE=0,ILT=0,PE=0,PT=0&nbsp;*/<br />&nbsp;&nbsp;SCIC1&nbsp;=&nbsp;0x00;&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;SCIC2:&nbsp;TIE=0,TCIE=0,RIE=0,ILIE=0,TE=1,RE=0,RWU=0,SBK=0&nbsp;*/<br />&nbsp;&nbsp;SCIC2&nbsp;=&nbsp;0x08;&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 />}<br />发送代码<br />void&nbsp;TERMIO_PutChar(unsigned&nbsp;char&nbsp;send)&nbsp;<br />{<br />&nbsp;&nbsp;volatile&nbsp;unsigned&nbsp;char&nbsp;dummy;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;while(!SCIS1_TDRE);<br />&nbsp;&nbsp;dummy&nbsp;=&nbsp;SCIS1;<br />&nbsp;&nbsp;SCID&nbsp;&nbsp;=&nbsp;send;&nbsp;&nbsp;&nbsp;&nbsp;<br />}//end&nbsp;SPI_PutChar
 楼主| 王培1 发表于 2009-7-16 14:08 | 显示全部楼层

问题暂时的解决办法是

for(i=0;&nbsp;i&lt&nbsp;17;&nbsp;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TERMIO_PutChar((unsigned&nbsp;char)txBuff);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />+<br />delayus(60000);就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

142

帖子

0

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