TI中文支持网
TI专业的中文技术问题搜集分享网站

cc430无线收发问题

官方提供的例程以及利尔达的开发板例程中,接收部分均需要进入LPM3低功耗模式进行等待,一旦去掉这个以后就进不了中断了……

另一个问题是按照例程进行修改变成连续发送/接收的程序,在发送端需要加非常大的延时(我在附件程序的注释中已经标注)等待接受端响应,否则根据延时缩小的不同接收端接收到的数据将出现不同程度的丢包(整包有规律地丢包),而接受端的中断服务程序并不复杂……

问题已经困扰很久了,咨询了利尔达公司的技术支持却迟迟得不到答复,感觉技术支持那边一直在推托,希望有工程师可以回复我,谢谢。

我修改的程序(我仅对例程的主程序进行了修改,RF1A.C等里面的内容并未修改)请参见附件。

Hardy Hu:

你好!

1)要进入中断一定要把全局中断打开,__bis_SR_register( GIE );

2)如果在while(1)里面发送,要等待3.33ms以上才能保证9600下4byte的数据发送完毕。

Zhiyuan Yin:

回复 Hardy Hu:

感谢您的解答,但是我依然存在疑问

第一条我曾经实验过,我用的就是您提供的这句话,而且我还试验了它的等效语句_EINT();,但事实证明一旦不使用LPM3就直接不行了

第二条,在发送端主频率为12MHz,,delayms()这个程序是两层嵌套for空循环延时,其中内层循环次数为800,设为70即出现丢包,而非嵌套for循环一次本身就至少需要数个机器周期,即便将一次for循环作为一个机器周期,80*700/12000000=0.0046667s,大于3.33ms。我只用9600返回了3个byte因此时间应该要求更短才对,而且按照您的回答,3.33ms可以发送4bytes,那么1s的时间我将可以在串口上获得1200bytes的数据,可事实是在不丢包的情况下,极限速度只有150bytes/s左右,显然不是串口速度的问题。而且我还使用过速度比串口更快的存储芯片的方式存储这些数据,得到的情况基本相同。

赞(0)
未经允许不得转载:TI中文支持网 » cc430无线收发问题
分享到: 更多 (0)