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的方法收发数据