单片机驱动学习记录

单片机驱动学习记录,第1张

单片机驱动学习记录

文章目录
  • 单片机驱动学习记录
  • 前言
  • 一、RTC驱动
    • 1. 温度补偿
      • 温度补偿原理
      • 公式
      • *** 作步骤
  • 二、UART
    • 1. 模拟串口
      • 串口工作原理
      • 模拟串口实现原理


前言

日常学习记录

固件开发成长之路


一、RTC驱动

RTC作为单片机的实时时钟,在我们开发过程中,对其精度有着一定的要求。RTC由晶振输出脉冲驱动,平常使用的频率为32768Hz,但是随着温度、压力等环境因素,往往会导致其频率发生偏差,从而导致计时不准确的问题。

1. 温度补偿 温度补偿原理

时钟精度往往会随着温度的变化发生变化,其发生变化有着一定的规律,在不同的温度下它的偏差值ppm值不同,因此通过【高低温箱】、【时钟精度仪器】,可以获取在不同温度下的偏差值,用秒点的方式会发现它近似于一个开口向下的抛物线,但是有着一定的偏差,但是我们可以通过曲线拟合的方式找到误差最小的抛物线,以此来计算偏差值进行补偿。

//TODO:附图

公式

偏差值(ppm) = a *(T - T’)² + b

时钟误差(s/d) = ppm * 1000000 / 86400

*** 作步骤
  1. 将a和b设为0
  2. 使用【时钟精度仪】监控rtc脉冲输出,获取时钟误差(s/d)
  3. 将初始温度设置为25℃,此时可以计算出参数b,以每15度为一个节点,设置环境温度(-50~90)℃
  4. 每一个温度节点都需要等待环境温度、mcu温度、晶振源稳定后,在记录时钟偏差值
  5. 通过时钟误差值计算出偏差值(ppm),通过秒点画出离散数据
  6. 通过最小二乘法将数据进行拟合得出参数a,拟合的时候将参数b设置为0
二、UART 1. 模拟串口 串口工作原理

物理串口是由单片机的UART模块实现,配置UART模块后,RX引脚接收到数据后会触发中断,在中断中用户可以去获取数据。在代码中我们看到仅此而已,在硬件上,移位寄存器和数据缓存寄存器已经帮我们做了起始位的监听,数据位的接收等,模拟串口就是通过外部中断和定时器的方式去监听和 *** 作输出引脚和输入引脚的高低电平来达到相同的目的。

模拟串口实现原理

通过一个外部中断和一个定时器模拟串口的收发。

  • 接收状态:
    1. 将一个具有外部中断功能的引脚做为rx引脚,设置为下降沿触发,使能。
    2. 将一个定时器的定时时间设置为串口波特率的一半(比如9600波特率,定时器周期则设为52us)。
    3. 当RX引脚接收到起始位的电平信号后,打开定时器。
    4. 在定时器中断函数中,将定时器定时时间设置位104us
    5. 定时器触发10次,分别是起始位、8位数据位、停止位,接收到停止位后,则表示一个字节接收完毕,可以将数据保存起来。在接收起始位和停止位时需要进行有效性判断

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1325192.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-12
下一篇2022-06-12

发表评论

登录后才能评论

评论列表(0条)

    保存