STM32的曼彻斯特编译码系统设计

时间:2012-02-21来源:网络

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

c.jpg


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

d.jpg


3.4 电流译码
将待测的曼彻斯特电流码信号通过电流/电压转换为电压码,进行整形使边缘变陡峭后交MCU来译码,电流/电压转换电路如图5所示。

e.jpg



4 软件设计
软件流程如图6所示。系统初始化包括时钟初始化、定时器初始化、DMA初始化等。如果一次性连续编码的数据最比较大时,应将这罩的DMA缓冲区设置为双缓冲,为每个用到的DMA通道开辟两个缓冲区。当DMA使用其中的一个缓冲区时,MCU调用编码或者译码算法来对另外一个缓冲区进行读写操作;当DMA数据传输完毕的时候,发生一个DMA传输结束中断,在中断服务程序里切换到另外一个缓冲区,并将编码算法或者译码算法标志位置位。当主程序查询到标志位置位后,MCU调用编码或者译码算法来对DMA先前指向的缓冲区进行处理(填充数据或者取数据)。当然,如一次性编码或者译码的数据不是很多时,我们只需一个缓冲区就够了。

f.jpg

1 2 3

关键词: 设计 系统 编译 曼彻斯特 STM32

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版