rsoc/Day4/README.md

77 lines
2.2 KiB
Markdown
Raw Normal View History

2024-07-30 14:49:27 +08:00
# 设备驱动
## I/O设备框架概念
### SPI驱动和设备驱动分离提供统一的API
• 更换 MCU 只需要改变对应的对接驱动
• 重新驱动设备,只需要重新编写设备驱动相关的代码
• 同一 API 接口,学习成本低
• 分离后设备驱动可以入库,供公司其他项目使用,减少碎片化开发,防止反复造轮子
• 代码框架会变复杂,但是从上面的优点来看是值得的
![spi驱动与设备驱动分离示意图](image-3.png)
2024-07-25 21:13:42 +08:00
### I/O框架
2024-07-31 15:00:10 +08:00
I/O设备显示屏、串口通信、flash、SD卡、以太网接口……
接口open,close...
![I/O框架图](image-4.png)
2024-07-25 21:13:42 +08:00
### 派生设备种类
![alt text](image.png)
2024-07-31 15:00:10 +08:00
``` c
RT_Device_Class_Char /* 字符设备 */
RT_Device_Class_Block /* 块设备 */
RT_Device_Class_NetIf /* 网络接口设备 */
RT_Device_Class_MTD /* 内存设备 */
RT_Device_Class_RTC /* RTC 设备 */
RT_Device_Class_Sound /* 声音设备 */
RT_Device_Class_Graphic /* 图形设备 */
RT_Device_Class_I2CBUS /* I2C 总线设备 */
RT_Device_Class_USBDevice /* USB device 设备 */
RT_Device_Class_USBHost /* USB host 设备 */
RT_Device_Class_SPIBUS /* SPI 总线设备 */
RT_Device_Class_SPIDevice /* SPI 设备 */
RT_Device_Class_SDIO /* SDIO 设备 */
RT_Device_Class_Miscellaneous /* 杂类设备 */
```
2024-07-25 21:13:42 +08:00
### 字符设备、块设备
#### 字符设备
顺序读取:键盘、串口
#### 块设备
随机读取硬盘、SD卡、NAND FLASH
### 为什么分类设备
一类的控制相同
### 例子
RT_D
##
### 创建销毁设备
### 注册销毁
### flags
分行?
### 实验1注册
### 访问
### 查找、初始化
### 打开、关闭
### 打开标志位
### 控制设备
### 读写设备
### 回调
### 调用关系图
IO设备管理层
PIN设备驱动框架层
PIN设备驱动层
## GPIO
引脚电源、时钟、控制、I/O
GPIO,功能复用I/O
可编程控制中断
![alt text](image-1.png)
rt_pin_mode()
rt_pin_write()
rt_pin_read()
![alt text](image-2.png)
### 外部中断
## I2C总线