18_SPI_Master驱动程序框架#
参考内核源码:
drivers\spi\spi.c
1. SPI传输概述#
1.1 数据组织方式#
使用SPI传输时,最小的传输单位是”spi_transfer”,
对于一个设备,可以发起多个spi_transfer,
这些spi_transfer,会放入一个spi_message里。
spi_transfer:指定tx_buf、rx_buf、len
同一个SPI设备的spi_transfer,使用spi_message来管理:
同一个SPI Master下的spi_message,放在一个队列里:
所以,反过来,SPI传输的流程是这样的:
从spi_master的队列里取出每一个spi_message
从spi_message的队列里取出一个spi_transfer
处理spi_transfer
1.2 SPI控制器数据结构#
参考内核文件:include\linux\spi\spi.h
Linux中使用spi_master结构体描述SPI控制器,有两套传输方法: