PC和ARM的串口通信问题

zhou_cocoo 2012-01-19 12:46:53
目前想实现利用串口完成对ARM的烧写功能,为了达到烧写效率高、可靠性好,问题就出现了。

第一种方案:
PC机将要烧写的文件打包,每包一个字节校验位。PC机发送一包,等待ARM的返回校验状态,若ARM返回校验通过,再发送下一包,否则重发。
这种机制虽然可靠,但是速度较慢,这样一收一发,发送线和接收线总是有一方空闲,没有充分利用串口双工的特点。

第2种方案:
PC机连续不断的向ARM端发包,ARM端也连续不断的发送校验位。最后统一处理校验不通过的包。
这样有以下问题,请赐教:
(1)在保持波特率不变的情况下,这样做可否提高速率。
(2) 为了保证连续发送时,前1包数据不被下一包数据覆盖,我怎么知道前一包数据已经发送完成,然后及时的发送下一包?
(3) 串口的波特率最大支持到多大,我现在用115200,再大一点儿后,打开串口时,程序报错。
...全文
206 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fronz 2012-01-19
  • 打赏
  • 举报
回复
其实lz主要是想讨论第二方案,
个人见解,
1,可以提高速率,但实际效果有限。因为一般校验位算法很简单,而传输的数据量不大的情况下就很难体现优势
当然确切情况需要测试。
2,既然是双工方式,而且数据包中应该加上本包字节数吧。总能解决,比如计时发送,指令回传等。
3,115200已经很大了,一般不要再高。而且串口波特率决定于你ARM的型号。低端的还达不到。

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧