嵌入式驱动学习

  • 时钟

    • 定义
      周期型的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芯片

相关推荐
世微 如初5 天前
AP5125大功率LED恒流驱动实战:地摊灯项目从原理图到调试笔记
驱动开发·芯片·led电源驱动·降压恒流ic
ScilogyHunter5 天前
Zephyr串口驱动开发及构建完全指南
驱动开发·uart·zephyr
_Emma_5 天前
【DRM&Graphic】Linux图形与显示框架
linux·驱动开发·图形渲染·显示器
董厂长5 天前
Loop Engineering:停止手动提示,开始设计自动提示的系统
大数据·人工智能·驱动开发·llm
Saniffer_SH6 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
暮云星影6 天前
全志linux开发屏幕适配(二)`HDMI`驱动适配说明
linux·arm开发·驱动开发
charlie1145141916 天前
嵌入式Linux驱动开发——从轮询到中断
linux·开发语言·驱动开发·嵌入式
暮云星影6 天前
瑞芯微rk3566开发FIT Secure Boot
linux·arm开发·驱动开发·安全
暮云星影6 天前
全志linux开发 USB接口设置
linux·arm开发·驱动开发
sukalot6 天前
windows显示驱动开发-CCD DDI的其它技术
windows·驱动开发