I/O设备 设备模型也是建立在内核对象模型基础上
目前支持的I/O 设备类型,如下: 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 /* 杂类设备 */
I/O设备支持设备驱动根据设备模型定义,创建出具备硬件访问能力的设备实例,将该设备通过 接口注册到 I/O 设备管理器中。
应用程序可以通过 接口查找到设备,然后使用 I/O 设备管理接口来访问硬件。
其他的函数实现
UART驱动应用程序通过 RT-Thread提供的 I/O 设备管理接口来访问串口硬件,相关接口如下所示: 函数 描述
rt_device_find()查找设备
rt_device_open()打开设备
rt_device_read()读取数据
rt_device_write()写入数据
rt_device_control()控制设备
rt_device_set_rx_indicate()设置接收回调函数
rt_device_set_tx_complete()设置发送完成回调函数
rt_device_close()关闭设备
PIN 设备应用程序通过 RT-Thread 提供的 PIN 设备管理接口来访问 GPIO,相关接口如下所示: 函数 描述
rt_pin_mode()设置引脚模式
rt_pin_write()设置引脚电平
rt_pin_read()读取引脚电平
rt_pin_attach_irq()绑定引脚中断回调函数
rt_pin_irq_enable()使能引脚中断
rt_pin_detach_irq()脱离引脚中断回调函数
需要注意RT-Thread 提供的引脚编号需要和芯片的引脚号区分开来,它们并不是同一个概念,引脚编号由 PIN 设备驱动程序定义,和具体的芯片相关。有2种方式可以获取引脚编号:使用宏定义或者查看PIN 驱动文件。
ADC 设备应用程序通过 RT-Thread 提供的 ADC 设备管理接口来访问 ADC 硬件,相关接口如下所示: 函数 描述
rt_device_find()根据 ADC 设备名称查找设备获取设备句柄
rt_adc_enable()使能 ADC 设备
rt_adc_read()读取 ADC 设备数据
rt_adc_disable()关闭 ADC 设备
CAN 设备应用程序通过 RT-Thread 提供的 I/O 设备管理接口来访问 CAN 硬件控制器,相关接口如下所示: 函数 描述
rt_device_find查找设备
rt_device_open打开设备
rt_device_read读取数据
rt_device_write写入数据
rt_device_control控制设备
rt_device_set_rx_indicate设置接收回调函数
rt_device_close关闭设备
HWTIMER设备应用程序通过 RT-Thread 提供的 I/O 设备管理接口来访问硬件定时器设备,相关接口如下所示: 函数 描述
rt_device_find()查找定时器设备
rt_device_open()以读写方式打开定时器设备
rt_device_set_rx_indicate()设置超时回调函数
rt_device_control()控制定时器设备,可以设置定时模式(单次/周期)/计数频率,或者停止定时器
rt_device_write()设置定时器超时值,定时器随即启动
rt_device_read()获取定时器当前值
rt_device_close()关闭定时器设备
I2C 总线设备一般情况下 MCU 的 I2C 器件都是作为主机和从机通讯,在 RT-Thread 中将 I2C 主机虚拟为 I2C总线设备,I2C 从机通过 I2C 设备接口和 I2C 总线通讯,相关接口如下所示: 函数 描述
rt_device_find()根据 I2C 总线设备名称查找设备获取设备句柄
rt_i2c_transfer()传输数据
PWM 设备应用程序通过 RT-Thread 提供的 PWM 设备管理接口来访问 PWM 设备硬件,相关接口如下所示: 函数 描述
rt_device_find()根据 PWM 设备名称查找设备获取设备句柄
rt_pwm_set()设置 PWM 周期和脉冲宽度
rt_pwm_enable()使能 PWM 设备
rt_pwm_disable()关闭 PWM 设备
RTC 设备应用程序通过 RTC 设备管理接口来访问 RTC 硬件,相关接口如下所示: set_date() 设置日期,年、月、日
set_time()设置时间,时、分、秒
time()获取当前时间
SPI 设备一般情况下 MCU 的 SPI 器件都是作为主机和从机通讯,在 RT-Thread 中将 SPI 主机虚拟为 SPI 总线设备,应用程序使用 SPI 设备管理接口来访问 SPI 从机器件,主要接口如下所示: 函数 描述
rt_device_find()根据 SPI 设备名称查找设备获取设备句柄
rt_spi_transfer_message()自定义传输数据
rt_spi_transfer()传输一次数据
rt_spi_send()发送一次数据
rt_spi_recv()接受一次数据
rt_spi_send_then_send()连续两次发送
rt_spi_send_then_recv()先发送后接收
QSPI 的数据传输接口如下所示: 函数 描述
rt_qspi_transfer_message()传输数据
rt_qspi_send_then_recv()先发送后接收
rt_qspi_send()发送一次数据
WATCHDOG设备应用程序通过 RT-Thread 提供的 I/O 设备管理接口来访问看门狗硬件,相关接口如下所示: 函数 描述
rt_device_find()根据看门狗设备设备名称查找设备获取设备句柄
rt_device_init()初始化看门狗设备
rt_device_control()控制看门狗设备
rt_device_close()关闭看门狗设备
WLAN 设备应用程序通过 RT-Thread 提供的 I/O 设备管理接口来访问看门狗硬件,相关接口如下所示: 初始化相关函数函数 描述
rt_wlan_init()初始化连接管理器
rt_wlan_set_mode()设置工作模式
rt_wlan_get_mode()获取设备工作模式
连接相关函数函数 描述
rt_wlan_connect()连接热点
rt_wlan_connect_adv()无阻塞连接热点
rt_wlan_disconnect()断开热点
rt_wlan_is_connected()获取连接标志
rt_wlan_is_ready()获取就绪标志
rt_wlan_get_info()获取连接信息
rt_wlan_get_rssi()获取信号强度
扫描相关函数函数 描述
rt_wlan_scan()异步扫描
rt_wlan_scan_sync()同步扫描
rt_wlan_scan_with_info()条件扫描
rt_wlan_scan_get_info_num()获取热点个数
rt_wlan_scan_get_info()拷贝热点信息
rt_wlan_scan_get_result()获取扫描缓存
rt_wlan_scan_result_clean()清理扫描缓存
rt_wlan_find_best_by_cache()查找最佳热点
热点相关函数函数 描述
rt_wlan_start_ap()启动热点
rt_wlan_start_ap_adv()无阻塞启动热点
rt_wlan_ap_is_active()获取启动标志
rt_wlan_ap_stop()停止热点
rt_wlan_ap_get_info()获取热点信息
自动重连相关函数函数 描述
rt_wlan_config_autoreconnect()启动/停止自动重连
rt_wlan_get_autoreconnect_mode()获取自动重连模式
事件回调相关函数函数 描述
rt_wlan_register_event_handler()事件注册
rt_wlan_unregister_event_handler()解除注册
功耗管理相关函数函数 描述
rt_wlan_set_powersave()设置功耗等级
rt_wlan_get_powersave()获取功耗等级
SENSOR设备应用程序通过 RT-Thread 提供的 I/O 设备管理接口来访问传感器设备,相关接口如下所示: 函数 描述
rt_device_find()根据传感器设备设备名称查找设备获取设备句柄
rt_device_open()打开传感器设备
rt_device_read()读取数据
rt_device_control()控制传感器设备
rt_device_set_rx_indicate()设置接收回调函数
rt_device_close()关闭传感器设备
Touch 设备应用程序通过 RT-Thread 提供的 I/O 设备管理接口来访问 Touch 设备,相关接口如下所示: 函数 描述
rt_device_find()根据 Touch 设备设备名称查找设备获取设备句柄
rt_device_open()打开 Touch 设备
rt_device_read()读取触点数据
rt_device_control()控制 Touch 设备
rt_device_set_rx_indicate()设置接收回调函数
rt_device_close()关闭 Touch 设备
CRYPTO 设备硬件加解密框架目前已经支持 AES/DES/3DES/RC4/SHA1/SHA2/MD5/CRC/RNG/BIGNUM 等加解密相关的接口。 访问 hash 算法设备应用程序通过 RT-Thread 提供的 hash 算法设备管理接口来访问 hash 算法设备硬件,相关接口如下所示: 函数 描述
rt_hwcrypto_hash_create()创建 hash 上下文
rt_hwcrypto_hash_destroy()释放上下文
rt_hwcrypto_hash_finish()计算最终 hash 值
rt_hwcrypto_hash_update()处理一包数据
rt_hwcrypto_hash_cpy()复制上下文
rt_hwcrypto_hash_reset()重置上下文
rt_hwcrypto_hash_set_type()设置 hash 算法类型
访问对称加解密设备应用程序通过 RT-Thread 提供的 symmetric 设备管理接口来访问 symmetric 算法设备硬件,相关接口如下所示: 函数 描述
rt_hwcrypto_symmetric_create()创建对称加解密上下文
rt_hwcrypto_symmetric_destroy()释放上下文
rt_hwcrypto_symmetric_crypt()加解密操作
rt_hwcrypto_symmetric_setkey()设置加解密密钥
rt_hwcrypto_symmetric_getkey()获取加解密密钥
rt_hwcrypto_symmetric_setiv()设置对称加解密初始化向量
rt_hwcrypto_symmetric_getiv()获取对称加解密初始化向量
rt_hwcrypto_symmetric_set_ivoff()设置对称加解密初始化向量偏移值
rt_hwcrypto_symmetric_get_ivoff()获取对称加解密初始化向量偏移值
rt_hwcrypto_symmetric_cpy()复制上下文
rt_hwcrypto_symmetric_reset()重置上下文
rt_hwcrypto_symmetric_set_type()设置加解密类型
访问 gcm 设备应用程序通过 RT-Thread 提供的 gcm 设备管理接口来访问 gcm 算法设备硬件,相关接口如下所示: 函数 描述
rt_hwcrypto_gcm_create()创建上下文
rt_hwcrypto_gcm_destroy()释放上下文
rt_hwcrypto_gcm_start()传入附加值
rt_hwcrypto_gcm_finish()生成消息认证码
rt_hwcrypto_gcm_crypt()进行加解密
rt_hwcrypto_gcm_setkey()设置密钥
rt_hwcrypto_gcm_getkey()获取密钥
rt_hwcrypto_gcm_setiv()设置初始化向量
rt_hwcrypto_gcm_getiv()获取初始化向量
rt_hwcrypto_gcm_set_ivoff()设置初始化向量偏移
rt_hwcrypto_gcm_get_ivoff()获取初始化向量偏移
rt_hwcrypto_gcm_cpy()复制上下文
rt_hwcrypto_gcm_reset()重置上下文
访问 CRC 设备应用程序通过 RT-Thread 提供的 CRC 设备管理接口来访问 CRC 算法设备硬件,相关接口如下所示: 函数 描述
rt_hwcrypto_crc_create()创建 CRC 上下文
rt_hwcrypto_crc_destroy()释放上下文
rt_hwcrypto_crc_update()计算一包数据
rt_hwcrypto_crc_cfg()设置上下文计算数据
访问 RNG 设备应用程序通过 RT-Thread 提供的 RNG 设备管理接口来访问 RNG 算法设备硬件,相关接口如下所示: 函数 描述
rt_hwcrypto_rng_update()获取默认设备随机数
访问大数设备应用程序通过 RT-Thread 提供的大数设备管理接口来访问大数算法设备硬件,相关接口如下所示: 函数 描述
rt_hwcrypto_bignum_default()获取默认上下文
rt_hwcrypto_bignum_init()初始化大数对象
rt_hwcrypto_bignum_free()释放大数
rt_hwcrypto_bignum_get_len()获取大数长度
rt_hwcrypto_bignum_export_bin()以大端模式输出二进制
rt_hwcrypto_bignum_import_bin()以大端模式输入二进制
rt_hwcrypto_bignum_add()大数相加
rt_hwcrypto_bignum_sub()大数相减
rt_hwcrypto_bignum_mul()大数相乘
rt_hwcrypto_bignum_mulmod大数乘积取模
rt_hwcrypto_bignum_exptmod大数幂运算取模
AUDIO设备应用程序通过 RT-Thread 提供的 I/O 设备管理接口来访问音频设备,相关接口如下所示: 函数 描述
rt_device_find()根据音频设备设备名称查找设备获取设备句柄
rt_device_open()打开音频设备
rt_device_control()控制音频设备
rt_device_read()读取数据
rt_device_write()写入数据
rt_device_close()关闭音频设备
Pulse Encoder 设备应用程序通过 RT-Thread 提供的 I/O 设备管理接口来访问脉冲编码器设备,相关接口如下所示: 函数 描述
rt_device_find()查找脉冲编码器设备
rt_device_open()打开脉冲编码器设备(仅支持只读的方式)
rt_device_control()控制脉冲编码器设备,可以清空计数值、获取类型、使能设备。
rt_device_read()获取脉冲编码器当前值
rt_device_close()关闭脉冲编码器设备
总结:RT-Thread系统提供了一系列的通用设备驱动,方便用户直接调用组件,加快平台搭建,专注于应用开发。 缺点:针对总线协议来说,通过牺牲一些性能来提高上层应用的可移植,无可厚非,但像ADC,PWM这类上层组件几乎没有的,可以考虑自己实现,提升性能。
|