0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于STM32F103RET6的编译码系统设计方案

基于STM32F103RET6的编译码系统设计方案

来源:
2021-08-23
类别:工业控制
eye 13
文章创建人 拍明

原标题:基于STM32F103RET6的编译码系统设计方案

  引言

  由于曼彻斯特(MancheSTer)编码具有传输时无直流分量,时钟提取方便等特点,被广泛地应用于以太网、车辆总线、工业总线中。现在工程上常用的曼彻斯特编译码芯片为HD-6408和HD-6409,但是这种芯片有一些不足。首先,该芯片在传输速率和每帧数据中的有效位数等方面都做了严格的限制。其次,使用该芯片需要增加额外的硬件电路,提高了系统成本。使用FPGA做曼彻斯特编译码成本高,而且开发周期长。本文提出了一种基于STM32F103RET6的编译码系统方案,利用了STM32F103RET6强大的定时器功能,采用灵活的编译码方式,传输速率和数据帧格式都可以根据需要完全自行定义。STM32F103RET6自带DMA的功能使得数据编码不再需要频繁的定时中断,提高了编码速率,节约了CPU的资源。该设计方案实现方法简单、稳定、灵活,应用范围广泛。

  1 曼彻斯特码

  曼彻斯特编码是一种自动同步的编码方式即时钟同步信号就隐藏在数据波形中。在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作为时钟信号,又作为数据信号。每个码元均用两个不同相位的电平信号表示,与用高、低电平表示的非归零二进制码相比,在连"0"或连"1"的情况下更易于提取同步时钟信息。并且曼彻斯特码传输时没有直流分量,可以降低系统的功耗,且有很强的抗干扰能力。图1所示是最常用的一种曼彻斯特编码方法,当传送信号为"1"时,曼彻斯特编码由高电平跳变为低电平;若传送的信息为"0",曼彻斯特由低电平跳变为高电平,在一个数据周期内保持低电平无跳变则表示空闲。

  


  图1 曼彻斯特编码

  2 STM32F103RET6的定时器与DMA简介

  控制器采用ST公司的STM32微处理器,STM32系列微处理器基于ARM Cortex-M3内核,采用高效的哈佛结构三级流水线,达到1.25DMIPS /MHz,这里我们选用增强型的STM32F103RET6.它具有如下特征:72 MHz系统时钟频率、512 KB闪存程序存储器、64 KBSRAM、8个定时器、3个12位模数转换器、1个数模转换器,1个CAN接口、7通道DMA控制器,以及SPI、USART、I2C、I2S、USB接口等。该控制器具有丰富的外设和较强的抗干扰能力,很适用于工业现场控制。

  STM32F103RET6有8个定时器,每个定时器由一个可编程预分频的1 6位自动装载计数器构成,计数频率高达72 MHz,它适用于多种场合包括输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较或者PWM)。

  STM32F103RET6支持DMA操作,DMA是在外没和存储器之间或者存储器和存储器之间的高速数据传输通道,通过DMA数据可以快速地移动而无需CPU的参与,这就节省了CPU的资源来做其他事情。本次设计便是利用计数器触发DMA进行内存与定时器的数据交换,比起中断查询的方式,提高了编码的效率和稳定性。

  定时器的计数频率最高为72 MHz,DMA传输速率为6 Mb/s,因此曼彻斯特编码的速率可以很轻松的做到1 Mb/s,满足高速编码的需求。

  3 系统实现方案

  基于STM32F103RET6的曼彻斯特电压、电流编译码系统框图如图2所示。该系统设计主要使用STM32F103RET6芯片的定时器加DMA功能来实现曼彻斯特的电压编译码,对于电流编码译码需要借助外围的电压与电流转换电路来实现。

  

image.png


  图2  基于STM32F103RET6的曼彻斯特电压、电流编译码系统框图

  3.1 电压编码

  将定时器设置为输出比较翻转功能,申请一个缓存区,将要编码的数据通过编码算法转换为翻转匹配值放入此缓存区,如图3所示的ABC DEF……计数值,编码算法根据具体应用中的编码协议来编写。启动定时器后,计数器开始计数,当计数值与定时器比较寄存器的值匹配时,输出引脚的电平进行翻转并触发DMA从缓存区来更新比较寄存器;每更新一次,DMA指向的内存地址递增1,指向下一次要更新到比较寄存器的数据,以此方式实现定时器根据缓存区的数据输出对应的编码波形。编码速率可通过修改定时器预分频器和RCC时钟控制器分频器来进行调节。

  

image.png


  图3 编辑示例

  3.2 电压译码

  将定时器设置为输入捕获功能,当曼彻斯特码的上升沿或下降沿到来时定时器会将当前的计数值进行捕获,并经由DMA通道传输到缓存区;主程序中会调用译码算法来对缓存区的数据进行处理并进行译码,译码作为编码的逆过程,其译码算法也要根据具体应用中的编码协议来编写。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案