首页 > 编程知识 正文

SPI协议,python执行效率

时间:2023-05-05 01:56:23 阅读:148204 作者:1305

spi总线注意事项及在linux上的实战使用

发布时间: 2020-06-28 00:23:43

来源: 51CTO

阅读: 472

作者: GaoNeil

spi总线注意事项及在linux上的实战使用

spi通常是4线(CS、MISO、MOSI、SCK )或3线) MISO和MOSI线的集成,但这里当然忽略了其他线,如设备芯片的电源、接地等。

一条spi总线只有一个主控器。 根据切片的选择情况,可以有多个slave,但一次只能执行一个任务。 用芯片选择cs信号进行区分。

这里只关心spi总线的外围设备,不需要像spi host controller驱动程序和内核spi_bus_type那样关心很多spi细节。

具体协议请参照《SPI_motorola_specification.pdf》

注意图中的CPHA和CPOL表示什么意思,决定是哪一个边缘采样。

需要注意支持linux的模式。

与常见外围设备驱动程序相关的内核提供的spi api如下:

具体见include/linux/spi/spi.h

spi_register_driver (,spi_unregister_driver ) )

struct spi_driver

spi_write (,spi_read )、spi_write_then_read )、spi_sync )、spi_async )、spi_setup ) )

struct spi_device

struct spi_message,spi_message_init (,spi_message_add_tail ) )

对于arm device tree之前的board方法,spi设备必须通过调用spi_register_board_info ()进行注册。 对于当前的arm device tree,spi的bus host controller驱动程序将根据添加到device tree的spi controller节点的子节点生成相应的spi设备。 将执行从spi_register_master ()调用of_register_spi_degister ()的spi_add_device (),并将其注册到相应的SPI总线编号中这将确定struct spi_device和struct spi_master之间的父子关系。

如果检索其中一个spi函数,就能在驱动程序中找到很多spi的设备驱动程序例子。

具体请参考我的免费linux各种驱动程序开发课程:

3359 edu.51cto.com/course/17138.html

另外,请看我的相关培训视频:

欢迎参加我们推出的每门课程: https://edu.51cto.com/lecturer/8896847.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。