我需要用xmodem协议从pc机下载一个文件
代码用的是vivi现成的,在57600的波特率下能正常运行
但是提高到115200的时候总是传一会儿就会出错(但是vivi是在115200波特率下正常运行)
读uerstat寄存器发现是overrun错,
明明手册上写的是当读出uerstat寄存器后错误位会自动清零
但是我循环读uerstat寄存器发现错误位总是1,
是不是pc发的太快了2410接受不过来?我cpu频率设置的是200MHz,1:2:4的
搞得很郁闷啊。
串口是同步的,不管pc还是2410,串口的连接都是在同一个频率下的。
的确是频率设的太高。2410除了接收数据,还要进行处理的,而处理是要时间的,没有硬件流控(CTS/RTS),很容易就溢出了。
但是vivi确实是在115200波特率下能正常通信
是不是我的代码需要优化。。
后面的程序都是在115200波特率下运行的
不能来回换啊,
不知道有什么好方法解决这个问题呢
vivi是在pc上跑的,cpu的频率够快,处理数据及时,不会丢掉串口数据。
to shuiyan:
vivi是板子上的bootloader,怎么会在pc上跑呢?
引用: 引用 6 楼 peimichael 的回复:
to shuiyan:
vivi是板子上的bootloader,怎么会在pc上跑呢?
这个是楼主说的那样,但是这个bootloader仅仅是串口打印信息,数据量非常小,所以不会出问题,你数据量大,并且没有什么间隔,估计就要自己写一些握手标志,就是处理完了,才通知另外一方发过来。
启用FIFO模式,解决问题
但是还想知道,是不是一般情况下都会使用FIFO模式?
我没什么开发经验,就觉得单从介绍来看似乎没有理由不用FIFO模式啊