/*
int open(const char *__file,int __oflag)
*/int fd = open(device,o_rdwr);
if(fd <0)
/*配置 spi 模式*/
void setspimode(int fd, unsigned short mode)
ret = ioctl(fd, spi_ioc_rd_mode, &mode);
if(ret == -1)
}/*配置 spi bits per word*/
void setspibitsperword(int fd, unsigned short bits)
ret = ioctl(fd, spi_ioc_rd_bits_per_word, &bits);
if(ret == -1)
printf("set spi bits per word ok!");
}/*配置 spi 最大傳輸速度*/
void setspimaxtransferspeed(int fd, unsigned int speed)
ret = ioctl(fd, spi_ioc_rd_max_speed_hz, &speed);
if(ret == -1)
printf("set spi max speed ok!");
}
spi的讀寫操作使用到 spi_ioc_transfer 結構體,結構體定義如下(spidev.h)
/*
*@tx_buf:寫資料緩衝區的指標 或為null
*@rx_buf:接收資料緩衝區指標,或為null
*@len:讀或寫緩衝區長度
*@speed_hz:通訊裝置位元率
*@bits_per_word:裝置的字長
*@delay_usecs:如果非零,本次傳輸最後一位完成,下次傳輸前取消裝置的延時。
*@cs_change:確認在下次傳輸之前取消裝置(spi 片選)
*/struct spi_ioc_transfer;
/*
*spi 傳輸
*如何判斷spi讀寫:判斷tx_buf與rx_buf是否為空
*全雙工操作:同時賦值rx_buf與tx_buf
*/void spimessagetransfer(unsigned char *sendbuf, unsigned char *recvbuf,int len)
}
Linux應用開發之執行緒
這一節我們來學習一下執行緒,首先來看一下執行緒建立函式 int pthread create pthread t thread,const pthread attr t attr,void start routine void void arg 第乙個引數thread 這個引數儲存的是建立了的執行緒...
linux驅動之spi學習小結
linux spi驅動總體架構 在2.6的linux核心中,spi的驅動架構可以分為如下三個層次 spi 核心層 spi控制器驅動層和spi裝置驅動層。linux 中spi驅動 位於drivers spi目錄。linux spi體系結構圖 本文對驅動框架不做詳細分析 可參見孟浩依然的博文 linux...
LInux 子系統 之 SPI 一
1.主機驅動與外設驅動分離 linux中的spi子系統利用了典型的把主機驅動和外設驅動分離的想法,讓主機端只負責產生匯流排上的傳輸波形,而外設端只是通過標準的api來讓主機端以適當的波形訪問自身。這裡面涉及到了4個軟體模組。1 主機端驅動 根據控制器的硬體手冊,操作spi控制器,產生匯流排的傳輸波形...