这里使用adt7320芯片来测试SPI1接口.
linux的spi驱动为用户提供了很多命令: 配置总线时序, 配置总线速率等
1 设置极性和相位(spi四种模式)
2 读取极性和相位
3 设置每 字 的长度
4 设置最大总线速率
5 数据接收/发送命令
struct spi_ioc_transfer {
__u64 tx_buf; //指向要发送数据的缓冲区
__u64 rx_buf; //指向要接收数据的缓冲区
__u32 len; // 发送数据和接收数据缓冲区中数据的长度
__u32 speed_hz; // 发送/接收这些数据需要的总线速率
__u16 delay_usecs;
__u8 bits_per_word; // 发送/接收这些数据在 SPI 总线上,每字是多少位
__u8 cs_change;
__u32 pad;
}
len 是指 tx_buf和 rx_buf所指向的缓冲区长度,而 speed_hz 不能大于SPI_IOC_WR_MAX_SPEED_HZ 命令设置的的总线速率。
当只需要发送数据时,需要将 rx_buf指向的缓冲区全填充‘ \0’,然后将要发送的数据填充到 tx_buf指向的缓冲区;
当只需要接收数据时,需要将 tx_buf指向的缓冲区全填充‘ \0’,而接收到的数据会保存在 rx_buf指向的缓冲区;
当在发送数据的同时需要