嵌入式驱动学习

  • 时钟

    • 定义
      周期型的0、1信号
      时钟信号由"心脏"时钟源产生,通过"动脉"时钟树传播到整个芯片中。
      SYSCLK系统时钟,由HSI、HSE、PLLCLK三选一。
      HCLK是AHB总线时钟, PCLK是APB总线时钟。
      使用某个外设,必须要先使能该外设时钟
    • 系统时钟配置
    • 作用
      1. 实现芯片里电路同步。 寄存器在时钟上升沿时,把最终运算结果写入寄存器,即把寄存器输入端(值稳定)传给输出端。串口需要固定的波特率通信,IIC需要时钟线。
      2. 决定数字电路的运行速度
    • 时钟源
      1. 晶振(HSE高速外部时钟),使用PLL(锁相环)倍频
      2. RC 振荡电路(HSI高速内部时钟),精度相对较差
  • 寄存器

    寄存器是特殊的存储器,可以实现对单片机各个功能的控制。寄存器就是单片机内部的控制机构。

  • APB总线协议

    APB 看成一种"线",这种线是来连接两个设备,一个是master,一个是slave,所有数据传输都是master来控制,slave来回应。

    数据传输在PCLK时钟上升沿进行

    进行一次数据传输至少需要两个时钟周期

  • UART总线协议

    通信过程:

    交叉连接两台设备的TXD、RXD

    配置两台设备的波特率、停止位、奇偶校验位,保持一致

    发送数据,从起始位到结束位,整个数据包以串行的方式,从发送设备端送至接收设备端

    接受端以预配置的波特率 对数据线进行采样,

    接收设备采样的数据,首先会丢弃数据帧中的起始位、奇偶检验位和停止位,剩下的是有效数据位

    全双工通信

    缺点:异步通信*(无时钟线),和UDP类似,无法确保接收端收到数据

  • I2C总线协议

    使用示波器和逻辑分析仪调试

    用示波器观察总线上的波形是否有畸变

    用逻辑分析仪做数据解析。

    半双工通信

  • 中断

    • NVIC相关寄存器:
      • 中断使能寄存器,打开中断,每个位对应一个外部中断
      • 中断除能寄存器,关闭中断,每个位对应一个外部中断
    • EXTI相关寄存器
      • 中断屏蔽寄存器,位值为0表示屏蔽相应线上的中断请求,位值为1表示开放相应线上的中断请求
        清除
      • 请求挂起寄存器, 状态标记,可以用来清除状态。位值为0表示相应线上没有触发中断请求,位值为1表示相应线上触发请求。在中断处理函数中可以通过写入位值1来清除中断标记,把相应值变成0。
    • 使用中断
  • 音频codec芯片

    Soc使用I2C协议读写codec芯片的寄存器,来配置codec芯片。 使用I2S协议传输音频数据。

    播放时,DMA的方向是内存到外设, 目的地址是I2S的数据寄存器,然后使用I2S协议把音频数据发送到codec芯片

相关推荐
花小璇学linux4 小时前
imx6ull-驱动开发篇19——linux信号量实验
linux·驱动开发·嵌入式软件
驱动探索者2 天前
瑞芯微 RK3588 平台驱动开发 学习计划
驱动开发·学习
花小璇学linux3 天前
imx6ull-驱动开发篇16——信号量与互斥体
linux·驱动开发·嵌入式软件
花小璇学linux3 天前
imx6ull-驱动开发篇15——linux自旋锁
linux·驱动开发·嵌入式软件
花小璇学linux4 天前
imx6ull-驱动开发篇14——原子操作
linux·驱动开发·嵌入式软件
sukalot4 天前
window显示驱动开发—验证覆盖支持
驱动开发
程序员JerrySUN5 天前
当前主流GPU全景讲解:架构、功能与应用方向
数据库·人工智能·驱动开发·redis·缓存·架构
猫猫的小茶馆6 天前
【STM32】HAL库中的实现(二):串口(USART)/看门狗(IWDG/WWDG)/定时器(TIM)
arm开发·驱动开发·stm32·单片机·嵌入式硬件·mcu·智能硬件
sukalot6 天前
window显示驱动开发—覆盖 DDI
驱动开发
花小璇学linux6 天前
imx6ull-驱动开发篇10——pinctrl 子系统
linux·驱动开发·imx6ull·嵌入式软件