基于STM32F的曼彻斯特电压/电流编译码系统设计
图2 基于STM32F103RET6的曼彻斯特电压、电流编译码系统框图
3.1 电压编码
将定时器设置为输出比较翻转功能,申请一个缓存区,将要编码的数据通过编码算法转换为翻转匹配值放入此缓存区,如图3所示的ABC DEF……计数值,编码算法根据具体应用中的编码协议来编写。启动定时器后,计数器开始计数,当计数值与定时器比较寄存器的值匹配时,输出引脚的电平进行翻转并触发DMA从缓存区来更新比较寄存器;每更新一次,DMA指向的内存地址递增1,指向下一次要更新到比较寄存器的数据,以此方式实现定时器根据缓存区的数据输出对应的编码波形。编码速率可通过修改定时器预分频器和RCC时钟控制器分频器来进行调节。
图3 编辑示例
3.2 电压译码
将定时器设置为输入捕获功能,当曼彻斯特码的上升沿或下降沿到来时定时器会将当前的计数值进行捕获,并经由DMA通道传输到缓存区;主程序中会调用译码算法来对缓存区的数据进行处理并进行译码,译码作为编码的逆过程,其译码算法也要根据具体应用中的编码协议来编写。
3. 3 电流编码
将电压编码通过图4所示的电压/电流转换电路来实现,将定时器输出的曼彻斯特电压编码转换为曼彻斯特电流码。
图4 电压/电流转换电路
3.4 电流译码
将待测的曼彻斯特电流码信号通过电流/电压转换为电压码,进行整形使边缘变陡峭后交MCU来译码,电流/电压转换电路如图5所示。
图5 电流/电压转换电路
评论