我正在寻找使用spi_transfer结构在SPI线上写入一些数据的代码
struct spi_transfer
{
const void * tx_buf;
void * rx_buf;
unsigned len;
dma_addr_t tx_dma;
dma_addr_t rx_dma;
unsigned cs_change:1;
u8 bits_per_word;
u16 delay_usecs;
u32 speed_hz;
struct list_head transfer_list;
};
现在有人在Code
中完成了这样的事情u8 *cmd
cmd=kmalloc(3,GFP_KERNEL);
cmd[0]=16;
cmd[1]=32;
现在t [0] .tx_buf = cmd;
现在我想知道写入这个缓冲区的是什么以及tx_buf在这里期待什么? 我们通过SPI线写入一些看门狗计数器。
答案 0 :(得分:1)
看起来您正在向SPI设备发送字节0x10,0x20,0x00。应该有其他代码定义并初始化struct spi_transfer t []的其余部分。值得注意的是,t [0] .len必须设置为3。
也许您的代码库是针对内核模块/设备驱动程序的。函数spi_message_add_tail()等在内核源代码中包含/ linux / spi / spi.h。它们不是动态模块,但是在加载模块时,模块将与内核链接。
检查内核源代码以获取SPI基础结构的使用示例,例如:驱动程序/碱/ regmap / regmap-spi.c。