linux应用:spi_ioc_transfer结构cs_change说明
结构说明
- 一、头文件
- 二、成员
- 三、cs_change 成员详解
一、头文件
linux内核源码/include/uapi/linux/spi/spidev.h
二、成员
struct spi_ioc_transfer {
__u64 tx_buf; //发送buf指针进行机器位数强制转换后赋值给tx_buf
__u64 rx_buf; //接收buf指针进行机器位数强制转换后赋值给rx_buf
__u32 len; //发送字节数,超过4096字节后可能会被截断,注意长度
__u32 speed_hz;//波特率配置,每秒多少bit
__u16 delay_usecs; //两次传输的delay,注意区分消息和传输的概念
__u8 bits_per_word;//每个字的bit数,一般配置为8
__u8 cs_change; //传输期间片选信号是否改变,下面重点解释
__u8 tx_nbits;
__u8 rx_nbits;
__u8 word_delay_usecs;
__u8 pad;
};
三、cs_change 成员详解
概念解释为一次传输结束后片选是否需要改变,实际中cs片选信号一般为低电平有效,可以理解为传输后cs是否失效(将cs拉为高电平),如果在一次片选有效(cs为低电平)期间调用
多次ioctl(fd,SPI_IOC_MESSAGE(n),tr)那最后一次调用时cs_change=0,不是最后调用时cs_change=1,最后一次调用时实际是cs电平拉高取消片选但是cs_change=0容易和拉低有效混淆;