Linux 應用開發 之 SPI

2021-10-07 01:13:50 字數 1291 閱讀 2953

/*

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控制器,產生匯流排的傳輸波形...