我对嵌入式设备的理解<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
要开始学习STM32的外围设备了,在学习嵌入式编程的过程中,我也看了很多关于外围设备驱动编程的书,下面把我对设备的理解简要记述如下。
一、设备与微处理器的接口
1、分类:根据设备是否直接与处理器系统总线相连,分为直接接口设备和间接接口设备。
直接接口设备就是直接连接于AHB和APB总线上的设备包括GPIO模块、串行通信模块、实时时钟、通用定时器、内部FLASH、内部SRAM、I<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2C通信接口、SPI通信接口等。
直接接口设备的主要工作是操作寄存器,这些寄存器都处在处理器的内存地址空间。
2、 间接接口设备比如使用SPI接口的SD卡、使用I2C接口的24C02、使用GPIO进行驱动的液晶等等。其实这些设备只是不直接与处理器的系统总线相连,而是具有其他类型外围总线的接口,现在有大量的这种设备比如I2C接口设备,SPI接口设备、I2S音频设备、USB设备、ATA接口设备,以及利用IO口模拟一些时序的设备。
间接接口设备一般编程时,最少分成两个层次来写驱动程序:一个是总线驱动,一个是针对设备时序的设备驱动。
二、直接接口设备
1、设备模型
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
2、设备的功能分类
这里主要根据设备的输入输出逻辑处理部分,作为输出:有直接用电平驱动外围元件的如GPIO接口、有用数据接口驱动外围元件的如DAC设备,有用时钟驱动外围元件的比如PWM设备,有与复杂时钟和数据相关的的驱动设备比如显示器驱动设备、音频输出设备。
作为输入:有直接检测外围电平高低的GPIO接口、有对外围元件电平进行模数转换的ADC设备、有对输入线的脉冲进行计数的定时器、有利用输出时钟与输入接口进行数据采集的采集设备比如视频采集设备、音频采集设备。
作为通信协议设备,比如USB设备、网络设备、串口通信设备,主要是将处理器发送过来的数据以外围总线规定的时序发送出去,或者是以协议规定的时序将线上接收到的数据送回微处理器。
三、间接接口设备
其实间接接口设备本质上跟直接接口设备差不多,指示左边的微处理器接口换成了外围总线接口。其接口处理逻辑、设备控制和输入输出逻辑处理部分是差不多的。
比如现在有SPI接口的网络接口设备、存储设备和显示驱动设备、有8088接口的显示驱动设备,有特殊时序接口的Nand Flash存储设备。
文章评论(0条评论)
登录后参与讨论