skynet 发表于 2012-7-17 17:51:13

刚刚踩到地雷了,430的串口缓冲区,唉,发出来给大家分享1下

为了让后人不再踩到地雷,特立此贴.
主MCU是msp430f5310,做1个字库,用的flash是串行的sst25vf016b.这个原先在stm32c8t6上很成功的烧写过的,结果在430上折腾1天,都是失败,现象就是,电脑串口发送数据给430,430无响应.代码原先是stm32上移植的,折腾了1天,终于发现,唉.....怨念啊.....
stm32c8t6的RAM很大,所以我电脑1次发送4096字节给MCU,然后MCU1次写入sst25vf1个扇区,正好4096字节.
msp430是不可以的,因为1次发送4096字节给他,它就死翘翘了,计数到1938左右就挂了,无法1次收取这么大的数据.很奇怪,我看手册上,F5310可是有6KB的RAM的呀.程序本身还用不到1KRAM,串口接收缓冲4K,应该是可以的,IAR编译也没报错.....
结果就是,把4096改成1024,每次电脑发1K数据,然后写FLASH,然后继续发.........
怨念啊.......

lcofjp 发表于 2012-7-17 19:09:38

得找找根本原因啊,能把工程共享一下么,我想了解一下。

armku 发表于 2012-7-17 19:20:30

本帖最后由 armku 于 2012-7-17 22:23 编辑

学习了,8位单片机和32位单片机还是有很多的区别的。
改正错误,MSP430为16位单片机

HadesHe 发表于 2012-7-17 19:37:07

看门狗复位了
来自:amoBBS 阿莫电子论坛 Android客户端

jlhgold 发表于 2012-7-17 19:38:00

armku 发表于 2012-7-17 19:20 static/image/common/back.gif
学习了,8位单片机和32位单片机还是有很多的区别的。

膜拜高手,430什么时候改规格了?

jlhgold 发表于 2012-7-17 19:41:59

如果我没有记错的话,这和ram没有什么关系,我6k用5k都没有问题,应该是连续发数据没弄好引起的!

zpxa001 发表于 2012-7-17 19:58:38

对,应该和RAM没关系,查程序,估计没移植正确

skynet 发表于 2012-7-17 20:27:29

项目里面的,这个大家可以试试,用电脑,1次发4096字节给430看看,430就是无法接收完全的.很简单的1个东东

orzorzorzorz 发表于 2012-7-17 20:30:19

armku 发表于 2012-7-17 19:20 static/image/common/back.gif
学习了,8位单片机和32位单片机还是有很多的区别的。

430是16位的!

orzorzorzorz 发表于 2012-7-17 20:31:02

skynet 发表于 2012-7-17 20:27 static/image/common/back.gif
项目里面的,这个大家可以试试,用电脑,1次发4096字节给430看看,430就是无法接收完全的.很简单的1个东东 ...

这个不一定是430的问题,应该是ram大小的关系,可能程序没搞好吧

learner123 发表于 2012-7-18 09:51:10

楼主啊,这肯定是自己的问题,还没找到问题的原因。
当然工程不是搞研究,允许不求甚解,但是,作为高级工程师的基本素质来说,还是自己好好看看分析问题吧。

青年湖畔 发表于 2012-7-18 15:30:10

jlhgold 发表于 2012-7-17 19:41 static/image/common/back.gif
如果我没有记错的话,这和ram没有什么关系,我6k用5k都没有问题,应该是连续发数据没弄好引起的! ...

是的,这位大侠说得对

jetlib 发表于 2012-7-19 10:04:44

我觉得可以肯定和RAM没有关系,因为RAM肯定是够用的。还是程序的问题。另外需要注意的一点是,430的波特率如果设的太高,TRX的误码率过大的话,一次性连续发送字节过多,会收到错误字节的。比如如果波特率对应的误码率是1%的话,理论上发送100个字节就有可能有一个字节出错。所以你也可以试试把波特率调低点再看一下。另外如果波特率太高,而MCU处理速度太慢的话,也很有可能接收中断都来不及处理收到的数据,结果430的两字节接收缓冲就over run了。

skynet 发表于 2012-7-19 10:34:08

多谢楼上的兄弟,我试了确实是,我把波特率设置为9600,接收发送几十万字节都正常,如果是用19200,就会出错.
唉,看来这个430的通讯波特率,如果是N万字节通讯还是要用0无码的波特率啊

lcofjp 发表于 2012-7-19 11:08:45

jetlib 发表于 2012-7-19 10:04 static/image/common/back.gif
我觉得可以肯定和RAM没有关系,因为RAM肯定是够用的。还是程序的问题。另外需要注意的一点是,430的波特率 ...

向高手致敬{:handshake:}

linghu2 发表于 2012-7-19 11:30:23

懒洋洋,搞啥米430呀,贵,又麻烦,要省电STM32L呀.{:titter:}

skynet 发表于 2012-7-19 11:42:05

linghu2 发表于 2012-7-19 11:30 static/image/common/back.gif
懒洋洋,搞啥米430呀,贵,又麻烦,要省电STM32L呀.

唉,狐狸呀,没办法呀,上个小玩意,电池供电,同时要用RTC唤醒,stm32爽是爽,但是功耗和那个蛋疼万恶的RTC,唉,不说也罢
页: [1]
查看完整版本: 刚刚踩到地雷了,430的串口缓冲区,唉,发出来给大家分享1下