Re: [问题] 比较不易受干扰的平价RF module

楼主: wtchen (没有存在感的人)   2016-12-20 03:42:19
先解释一下,我现在就是用RPi+Linux Preempt RT
(有时候会切到Xenomai试一下,不过个人感觉似乎不太有必要,Preempt RT够用了)
※ 引述《MasterChang (我爱ASM)》之铭言:
: 因为对象是linux跟arduino.....
: : UART的问题是比较慢(我指把接收到的讯号传输给cpu)
: : 根据规格好像是115200bps?
: 对,uart是比较慢,不过发送资料不用等待全部资料都送出才往下执行程式。
我是用Arduino发送,RPi接收
: : 那如果我传送个4 bytes的资料至少需要278us
: : 如果buffer里面还有东西没传完搞不好加倍。
: linux是写到传送缓冲区,没记错buffer size是4k,你也可以修改更大的值
: Arduino是64k,所以发送函式将资料写到缓冲区就射后不理,除非它满了。
不管有无buffer,CPU还是必须为了传送资料而被占用。
(只有4 byte我想应该用不到DMA)
: : spi的话RPI可以支援8Mb/s(似乎更多),我传4 bytes大概才4us
: 你要考虑的是RF模组的buffer,因为无线电频宽才是决定资料能传多快。
: uart多,除了接口简单,就是无线频宽不高,uart足以应付。
我要用RF module做到的是遥控,buffer太大对我来说没啥帮助。
(当下的指令才有意思)
: : 如果还有real time的要求+CPU的load很紧的时候这就差很多了....
: : 我一个控制周期4ms,I2C就占掉1ms左右,
: : 如果用在无线传输的时间太久我得花更多心力去处理超时问题....
: linux很难做real time,real time至少要保证回应时间,好歹用thread解决这问题。
: 要不就把xenomai移植进来。
目前的经验,只要不要涉及 file i/o
(因为SD卡会因为wear leveling机制造成有时写入时间过长)
出来的时间都是算很准,我的要求周期4ms误差在1ms就ok
(使用Preempt RT误差不超过0.1ms, Xenomai结果稍差会到0.3ms)
file i/o后来我是多开一个thread解决,不过会因为这样漏掉一些data
(这无法避免,wear leveling你不用也不行阿)
作者: WolfLord (呆呆小狼￾ ￾ N￾ ￾ )   2016-12-20 14:52:00
写一个Driver Mod跑RAM就好了啊

Links booklink

Contact Us: admin [ a t ] ucptt.com