
SPI
文章平均质量分 85
uleemos
这个作者很懒,什么都没留下…
展开
-
SPI (四) -- spi_sync和spi_async的调用流程
内核版本:4.9.88前面我们分析了总线驱动模型,同时分析了如何编写设备驱动。只从上层使用角度去分析。因为内核的spi代码里已经提供好了相应的函数框架供我们使用,这里看一下最核心的两个函数spi_sync和spi_async。原创 2023-06-17 01:41:03 · 5237 阅读 · 0 评论 -
SPI (三) -- 如何编写SPI设备驱动程序
上面将函数读写的上下层调用关系简单说明,其中,有个重要的数据结构,就是 struct spi_message *message。spi_message中存放的transfer链表,是由多个spi_transfer结构体组成,链表通过上图中的spi_message_add_tail函数,将传输的buff放入链表尾部。函数,对应的是异步的SPI传输函数,简单地说就是这个函数即刻返回,它返回后SPI传输不一定已经完成。,这是一个同步、阻塞的SPI传输函数,返回要么成功,要么失败。函数最终返回时,调用了。原创 2023-06-14 23:49:45 · 3176 阅读 · 0 评论 -
SPI (二) -- SPI总线设备驱动模型
下图来自韦东山SPI总线设备驱动模型的图示,清晰的介绍了SPI设备和SPI控制器之间的关联。Linux中使用spi_master结构体描述SPI控制器,里面最重要的成员就是。SPI子系统中根据主从控制的方式,有两类设备,SPI控制器和SPI设备。SPI控制器有驱动程序,提供SPI的传输能力。原创 2023-06-13 02:07:32 · 782 阅读 · 0 评论 -
SPI(一) -- 协议介绍
途中可以看到它有一根SCK的时钟信号和各个硬件模块相连,为了保证发送端和接收端的同步,告诉这根线上的设备,“我要开始同步(发送或接收)数据了”。0x56的二进制也就是 0101 0110,最高位MSB为0,LSB为0,数据传输的方向是从MSB最高位到最低位LSB一位一位的移动进入SPI 的data register。以上图为例,数据采集信号的时刻是时钟第二个边沿(上升沿),即CPHA为1,同时因为SCLK的初始电平为高电平,所以CPOL为1.CPOL:表示SCK的初始电平,0为低电平,1为高电平。原创 2023-06-12 23:29:05 · 216 阅读 · 0 评论