spi_slave使用记录

Spi_Slave使用记录

1、作为一个从设备,我啥都不知道

控制权完全在master手里,master翻我牌(CS片选拉低了),才会被唤醒,要么就在沉睡,你往数据线上发什么都没有用。

时钟线在master手里,没有时钟传过来,就等于电器没插电。插上电就开始工作。

2、配置

在使用之前要配置好spi_slave,spi_slave唯一任性的一个点是,master要匹配上slave的配置属性,cpol,cpha要看slave的脸色。否则数据传输就有可能会异常(有可能:第一个数据或者最后一个数据出差,或者全都出差)

3、工作流程

slave能做的其实就是两件事:读自己的接收缓冲区(RxFIFO),往自己的发送缓冲区填充数据(TxFIFO)。检测到发送缓冲区空闲了或者有空间余出来了,可以继续写入,检测到接收缓冲区有数据了就可以读出来看看。正常的时序操作时没问题的。假如说slave的发送缓冲区没有写入,这时候master来读取了,那读出来的数据谁都不知道是什么,这些书就没有任何意义。

`spi-slave-time.c` 是一个 Linux 内核模块,它提供了一个 SPI 从设备驱动程序,并且可以在从设备上测量 SPI 时序。下面是这个模块的详细内容: 1. 首先,这个模块定义了一个 `spi_slv_time` 结构体,用于保存从设备的 SPI 时序信息。这个结构体包含了以下字段: ```c struct spi_slv_time { ktime_t tx_start; ktime_t rx_end; ktime_t irq_start; ktime_t irq_end; }; ``` `tx_start` 字段保存了 SPI 传输的开始时间,`rx_end` 字段保存了 SPI 接收的结束时间,`irq_start` 字段保存了 SPI 中断处理程序开始执行的时间,`irq_end` 字段保存了 SPI 中断处理程序结束执行的时间。 2. 接下来,这个模块实现了一个 `spi_slv_time_irq()` 函数作为 SPI 从设备的中断处理程序。这个函数会记录 SPI 中断处理程序的开始和结束时间,并且在中断处理完成后,将时序信息保存到 `spi_slv_time` 结构体中。 3. 然后,这个模块实现了一个 `spi_slv_time_transfer()` 函数作为 SPI 从设备的传输函数。这个函数会记录 SPI 传输的开始时间,并且在传输完成后,将时序信息保存到 `spi_slv_time` 结构体中。 4. 最后,这个模块提供了一个 `spi_slv_time_probe()` 函数作为从设备的驱动程序。这个函数会注册 SPI 从设备,并且将 `spi_slv_time_irq()` 和 `spi_slv_time_transfer()` 函数设置为中断处理程序和传输函数。 综上所述,`spi-slave-time.c` 是一个为 SPI 从设备提供时序测量功能的 Linux 内核模块。它可以记录 SPI 传输和中断处理程序的开始和结束时间,并且保存这些信息到一个结构体中,以便后续分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值