我的應用是這樣的:
SPI收到1024個資料后,通過網路發送出去。
我原來的應用是這樣的(省略了配置):
static uint8_t flag;
void *spi_proc(void){
int i;
while(1){
if(flag == 0){
for(i=0;i<32;i++){
ret = read(fd, rx_buf1, 32); //SPI一次最多傳輸32個位元組
rx_buf1 = rx_buf1 + 32;
}
flag = 1;
}
else{
for(i=0;i<32;i++){
ret = read(fd, rx_buf2, 32); //SPI一次最多傳輸32個位元組
rx_buf1 = rx_buf1 + 32;
}
flag = 0;
}
if(flag == 0) send(tcp_fd, rx_buf2, 1024,MSG_DONTWAIT);
else send(tcp_fd, rx_buf1, 1024,MSG_DONTWAIT);
}
}
問題是
1:SPI效率很低,如下波形,有2/3的時間是空閑的
2:根據接收到的情況,影像有卡頓,具體原因不明

我想不是SPI作業在阻塞模式下不好,串口程式中有使用select的情況,但SPI作業在主機下的話必須先呼叫read才行, 不然沒有時鐘,select監測不到讀狀態有什么變化吧,linux下怎么使用SPI從機?怎使用DMA?怎么讓SPI作業在非阻塞下?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/268028.html
標籤:應用程序開發區
上一篇:CentOS7下解決Intel 10GE網卡ifconfig不顯示
下一篇:修改ftp默認埠報錯
