[ZLG-ARM] 郁闷的LPC2138串口通讯问题

[复制链接]
3185|4
 楼主| rfsq 发表于 2008-8-19 15:43 | 显示全部楼层 |阅读模式
我通过USB转串口线从PC下载数据到我的板子上,数据量大概300-400K,每60字节一包进行下传.波特率小于115200的时候通讯没问题,波特率设置为115200时变得很不稳定,有时能完整下传完,有时传一定数据包就出错.采用的晶振是11.0592MHz.很是郁闷,请问谁遇到这个问题了没?
汽车电子 发表于 2008-8-19 21:37 | 显示全部楼层

PL-2303HX芯片的USB转串口是没问题的,我一直用

&nbsp;&nbsp;115200bps不稳定,PLL是否够??<br />&nbsp;&nbsp;速度快了,和电路、电缆也有关系
王紫豪 发表于 2008-8-19 23:24 | 显示全部楼层

我用CH341,一直都用 230400波特率 ISP 烧程序!!

对了,晶体是&nbsp;14.7456M
 楼主| rfsq 发表于 2008-8-20 10:04 | 显示全部楼层

没觉得哪里设置有问题啊

部分初始化如下:<br />#define&nbsp;Fosc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11059200&nbsp;<br />#define&nbsp;Fcclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fosc&nbsp;*&nbsp;4)<br />#define&nbsp;Fcco&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;*&nbsp;4)<br />#define&nbsp;Fpclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;/&nbsp;4)<br /><br />&nbsp;PLLCON&nbsp;=&nbsp;1;<br />#if&nbsp;(Fpclk&nbsp;/&nbsp;(Fcclk&nbsp;/&nbsp;4))&nbsp;==&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;VPBDIV&nbsp;=&nbsp;0;<br />#endif<br />#if&nbsp;(Fpclk&nbsp;/&nbsp;(Fcclk&nbsp;/&nbsp;4))&nbsp;==&nbsp;2<br />&nbsp;&nbsp;&nbsp;&nbsp;VPBDIV&nbsp;=&nbsp;2;<br />#endif<br />#if&nbsp;(Fpclk&nbsp;/&nbsp;(Fcclk&nbsp;/&nbsp;4))&nbsp;==&nbsp;4<br />&nbsp;&nbsp;&nbsp;&nbsp;VPBDIV&nbsp;=&nbsp;1;<br />#endif<br /><br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;2<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(0&nbsp;&lt&lt&nbsp;5);<br />#endif<br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;4<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;5);<br />#endif<br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;8<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(2&nbsp;&lt&lt&nbsp;5);<br />#endif<br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;16<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(3&nbsp;&lt&lt&nbsp;5);<br />#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;while((PLLSTAT&nbsp;&&nbsp;(1&nbsp;&lt&lt&nbsp;10))&nbsp;==&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCON&nbsp;=&nbsp;3;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0x55;<br /><br />uint8&nbsp;InitUart1(uint32&nbsp;bps)<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint16&nbsp;Fdiv;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;|=&nbsp;0x00050000;&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;选择管脚为UART1&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;U1LCR&nbsp;=&nbsp;0x80;&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;Fdiv&nbsp;=&nbsp;(Fpclk&nbsp;/&nbsp;16)&nbsp;/&nbsp;bps;&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;U1DLM&nbsp;=&nbsp;Fdiv&nbsp;/&nbsp;256;&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;U1DLL&nbsp;=&nbsp;Fdiv&nbsp;%&nbsp;256;&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;U1LCR&nbsp;=&nbsp;0x03;&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;//U1LCR&nbsp;=&nbsp;0x1b;&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;且设置为8,1,n&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U1IER&nbsp;=&nbsp;0x05;&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;//U1IER&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;U1FCR&nbsp;=&nbsp;0x87;&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;初始化FIFO=8&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntSelect&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr0&nbsp;=&nbsp;(uint32)Uart1_Handler;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl0&nbsp;=&nbsp;0x27;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnable&nbsp;|=&nbsp;1&nbsp;&lt&lt&nbsp;7;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TRUE;<br />}<br />我用的转换芯片是cp2102.
 楼主| rfsq 发表于 2008-8-20 10:24 | 显示全部楼层

发错

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

本版积分规则

12

主题

24

帖子

2

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