刚刚踩到地雷了,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,然后继续发.........
怨念啊....... 得找找根本原因啊,能把工程共享一下么,我想了解一下。 本帖最后由 armku 于 2012-7-17 22:23 编辑
学习了,8位单片机和32位单片机还是有很多的区别的。
改正错误,MSP430为16位单片机 看门狗复位了
来自:amoBBS 阿莫电子论坛 Android客户端 armku 发表于 2012-7-17 19:20 static/image/common/back.gif
学习了,8位单片机和32位单片机还是有很多的区别的。
膜拜高手,430什么时候改规格了? 如果我没有记错的话,这和ram没有什么关系,我6k用5k都没有问题,应该是连续发数据没弄好引起的! 对,应该和RAM没关系,查程序,估计没移植正确 项目里面的,这个大家可以试试,用电脑,1次发4096字节给430看看,430就是无法接收完全的.很简单的1个东东 armku 发表于 2012-7-17 19:20 static/image/common/back.gif
学习了,8位单片机和32位单片机还是有很多的区别的。
430是16位的! skynet 发表于 2012-7-17 20:27 static/image/common/back.gif
项目里面的,这个大家可以试试,用电脑,1次发4096字节给430看看,430就是无法接收完全的.很简单的1个东东 ...
这个不一定是430的问题,应该是ram大小的关系,可能程序没搞好吧 楼主啊,这肯定是自己的问题,还没找到问题的原因。
当然工程不是搞研究,允许不求甚解,但是,作为高级工程师的基本素质来说,还是自己好好看看分析问题吧。 jlhgold 发表于 2012-7-17 19:41 static/image/common/back.gif
如果我没有记错的话,这和ram没有什么关系,我6k用5k都没有问题,应该是连续发数据没弄好引起的! ...
是的,这位大侠说得对 我觉得可以肯定和RAM没有关系,因为RAM肯定是够用的。还是程序的问题。另外需要注意的一点是,430的波特率如果设的太高,TRX的误码率过大的话,一次性连续发送字节过多,会收到错误字节的。比如如果波特率对应的误码率是1%的话,理论上发送100个字节就有可能有一个字节出错。所以你也可以试试把波特率调低点再看一下。另外如果波特率太高,而MCU处理速度太慢的话,也很有可能接收中断都来不及处理收到的数据,结果430的两字节接收缓冲就over run了。 多谢楼上的兄弟,我试了确实是,我把波特率设置为9600,接收发送几十万字节都正常,如果是用19200,就会出错.
唉,看来这个430的通讯波特率,如果是N万字节通讯还是要用0无码的波特率啊 jetlib 发表于 2012-7-19 10:04 static/image/common/back.gif
我觉得可以肯定和RAM没有关系,因为RAM肯定是够用的。还是程序的问题。另外需要注意的一点是,430的波特率 ...
向高手致敬{:handshake:} 懒洋洋,搞啥米430呀,贵,又麻烦,要省电STM32L呀.{:titter:} linghu2 发表于 2012-7-19 11:30 static/image/common/back.gif
懒洋洋,搞啥米430呀,贵,又麻烦,要省电STM32L呀.
唉,狐狸呀,没办法呀,上个小玩意,电池供电,同时要用RTC唤醒,stm32爽是爽,但是功耗和那个蛋疼万恶的RTC,唉,不说也罢
页:
[1]