stm32f4中实现RT_Thread的SPI设备接口

来源:互联网 发布:淘宝买家具组装很烦 编辑:程序博客网 时间:2024/06/05 23:51

RT_Thread的IO设备(rt_device)自定义实现

1. 实现一个继承抽象类rt_device为一个具体设备类,比如MyIODevice,并且实现父类的init, open, read, write等抽象IO接口
2. MyIODevice的IO接口一般不直接使用硬件驱动代码实现,因为那样会使得该设备类只能依赖具体硬件接口,而是再抽象出该具体设备类的IO接口
3. 实现MyIODeivec的IO接口的硬件驱动代码,这样更换设备的时候只需要改变具体类的IO需求接口就可以,调用层次为:rt_device->read(), MyIODeivce->read, stm32_MyIODevice->read()(or  chip51_MyIODevice->read())
4. 按名字注册设备(注册时先init),使用的时候先调用open(),之后进行读写操作



SPI实现过程

0.SPI初始化步骤:
1).初始化MOSI,MISO,SCL,CS的GPIO口及其时钟
2).初始化DMA
3).SPI_Init(SPIx, SPI_InitStructure), SPI_Cmd(SPIx, Enable)

1.注册stm32_spi_bus设备。rt_spi_bus继承于rt_device作为具体的IO设备类,而stm32_spi_bus继承于rt_spi_bus实现stm32的硬件驱动。
stm32_spi_ops实现rt_spi_bus的抽象接口rt_spi_ops完成读写操作
2. 注册rt_spi_device设备。表示从机,设置一个GPIO口作为其片选口,并在记录其主机spi设备

3. 使用rt_spi_transfer_message等封装stm32_spi_ops的方法收发数据



原创粉丝点击