一:SPI驱动框架简介
SPI驱动框架同I2C类似,分为主机控制器驱动和设备驱动。
1、SPI主机驱动
SPI主机驱动就是SOC的SPI控制器驱动,Linux内核使用spi_master表示SPI主机驱动:
struct spi_master {
struct device dev;
struct list_head list;
s16 bus_num;
u16 num_chipselect;
u16 dma_alignment;
/* spi_device.mode flags understood by this controller driver */
u16 mode_bits;
/* bitmask of supported bits_per_word for transfers */
u32 bits_per_word_mask;
... ...
/* limits on transfer speed */
u32 min_speed_hz;
u32 max_speed_hz;
... ...
/* other constraints relevant to this driver */
u16 flags;
/* lock and mutex for SPI bus locking */
spinlock_t bus_lock_spinlock;
struct mutex bus_lock_mutex;
bool bus_lock_flag;
int (*setup)(struct spi_device *s

本文详细介绍了Linux SPI驱动,包括SPI驱动框架、主机驱动和设备驱动的分析,以及设备和驱动的匹配过程。SPI主机驱动涉及spi_master的申请、初始化和注册,而SPI设备驱动则通过spi_driver结构体实现,并通过spi_message进行数据传输。文章还提供了同步和异步传输的示例。
订阅专栏 解锁全文
368

被折叠的 条评论
为什么被折叠?



