MCAL是为控制抽象层的缩写。进一步,MCAL可以分成4个驱动组:微控制器驱动组、存储器驱动组、通信驱动组、输入输出驱动组。

         之前这部分我也有一定的了解,但是都已经忘得差不多了,关键是没有理解透。其实,软件应该可以通过树状结构来一个层级的划分,后续我自己设计软件的时候确实也可以按照这个做一下分组。

  1. 关于控制区驱动组
    1. MCU驱动
      1. 锁相环
      2. RAM初始化
      3. MCU低功耗状态(这个我没用过)
      4. MCU重启模式(我似乎也没用过)
      5. 硬件复位源查询(沾了一点边)
    2. 看门狗驱动

这部分多少有点疑问,如果是有外部看门狗的话这个属于这里吗?最起码,外部看门狗不该在MCAL吧?

    1. GPT驱动
      1. 通用定时器
      2. 操作系统的定时服务
      3. 其他的定时服务
  1. 存储驱动组
    1. FLS驱动,主要是FLASH相关的EE模拟、BootLoader等功能。从这里的描述看,Flash的驱动确实不该写在FLASH中,而是有一个加载引导的功能。
    2. EEP驱动
      1. 主要是EEP的读写功能
      2. 一个小疑惑:FLASH模拟EE应该属于前者还是在这里?外置的EEPROM又是怎样的分类方式?一般的分类是按照功能来分还是按照功能块所处的位置来分?
  2. 通信驱动组
    1. SPI驱动
    2. LIN驱动
    3. CAN驱动
    4. FlexRay驱动(FR驱动)
    5. 以太网驱动(ETH驱动)

一个小疑问:没有串口、IIC之类的通信吗?会明确到这样的程度吗?

  1. 输入输出驱动组
    1. PORT驱动
      1. 主要的功能是进行哥哥端口的配置以及初始化,在这里决定每个引脚最终配置成什么功能。
    2. DIO驱动
      1. 首先要完成PORT的功能,才会有DIO。DIO是提供对引脚读写功能的驱动。
    3. ADC驱动
      1. 应该也是建立在意PORT的基础上,提供AD采集的功能。
  2. PWM驱动
    1. 建立在PORT的基础上,提供PWM输出功能
  3. ICU驱动
    1. 建立在PORT的基础上,实现信号(PWM、脉冲计数、测量信号周期和占空比 、普通终端和唤醒终端等)。
  4. OCU驱动
    1. MCAL中没有专门的规定。