因為對象是linux跟arduino.....
: UART的問題是比較慢(我指把接收到的訊號傳輸給cpu)
: 根據規格好像是115200bps?
:
對,uart是比較慢,不過發送資料不用等待全部資料都送出才往下執行程式。
: 那如果我傳送個4 bytes的資料至少需要278us
: 如果buffer裏面還有東西沒傳完搞不好加倍。
:
linux是寫到傳送緩衝區,沒記錯buffer size是4k,你也可以修改更大的值
Arduino是64bytes,所以發送函式將資料寫到緩衝區就射後不理,除非它滿了。
: spi的話RPI可以支援8Mb/s(似乎更多),我傳4 bytes大概才4us
:
你要考慮的是RF模組的buffer,因為無線電頻寬才是決定資料能傳多快。
uart多,除了介面簡單,就是無線頻寬不高,uart足以應付。
: 如果還有real time的要求+CPU的load很緊的時候這就差很多了....
: 我一個控制週期4ms,I2C就佔掉1ms左右,
: 如果用在無線傳輸的時間太久我得花更多心力去處理超時問題....
linux很難做real time,real time至少要保證回應時間,好歹用thread解決這問題。
要不就把xenomai移植進來。