
文章目录
- 单片机驱动学习记录
- 前言
- 一、RTC驱动
- 1. 温度补偿
- 温度补偿原理
- 公式
- *** 作步骤
- 二、UART
- 1. 模拟串口
- 串口工作原理
- 模拟串口实现原理
前言
日常学习记录
固件开发成长之路
一、RTC驱动
RTC作为单片机的实时时钟,在我们开发过程中,对其精度有着一定的要求。RTC由晶振输出脉冲驱动,平常使用的频率为32768Hz,但是随着温度、压力等环境因素,往往会导致其频率发生偏差,从而导致计时不准确的问题。
1. 温度补偿 温度补偿原理时钟精度往往会随着温度的变化发生变化,其发生变化有着一定的规律,在不同的温度下它的偏差值ppm值不同,因此通过【高低温箱】、【时钟精度仪器】,可以获取在不同温度下的偏差值,用秒点的方式会发现它近似于一个开口向下的抛物线,但是有着一定的偏差,但是我们可以通过曲线拟合的方式找到误差最小的抛物线,以此来计算偏差值进行补偿。
//TODO:附图
公式偏差值(ppm) = a *(T - T’)² + b
时钟误差(s/d) = ppm * 1000000 / 86400
*** 作步骤- 将a和b设为0
- 使用【时钟精度仪】监控rtc脉冲输出,获取时钟误差(s/d)
- 将初始温度设置为25℃,
此时可以计算出参数b,以每15度为一个节点,设置环境温度(-50~90)℃ - 每一个温度节点都需要等待环境温度、mcu温度、晶振源稳定后,在记录时钟偏差值
- 通过时钟误差值计算出偏差值(ppm),通过秒点画出离散数据
- 通过最小二乘法将数据进行拟合得出参数a,
拟合的时候将参数b设置为0
物理串口是由单片机的UART模块实现,配置UART模块后,RX引脚接收到数据后会触发中断,在中断中用户可以去获取数据。在代码中我们看到仅此而已,在硬件上,移位寄存器和数据缓存寄存器已经帮我们做了起始位的监听,数据位的接收等,模拟串口就是通过外部中断和定时器的方式去监听和 *** 作输出引脚和输入引脚的高低电平来达到相同的目的。
模拟串口实现原理通过一个外部中断和一个定时器模拟串口的收发。
- 接收状态:
- 将一个具有外部中断功能的引脚做为rx引脚,设置为下降沿触发,使能。
- 将一个定时器的定时时间设置为串口波特率的一半(比如9600波特率,定时器周期则设为52us)。
- 当RX引脚接收到起始位的电平信号后,打开定时器。
- 在定时器中断函数中,将定时器定时时间设置位104us
- 定时器触发10次,分别是起始位、8位数据位、停止位,接收到停止位后,则表示一个字节接收完毕,可以将数据保存起来。
在接收起始位和停止位时需要进行有效性判断。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)