15630|44

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32用来做曼彻斯特码的问题 [复制链接]

                                 我现在要实现一个功能,就是比如我一个buf中有4000个数据,每个数据8bit,然后我要用2Mhz的速度在一个IO上实现连续发送这32000bit的数据,也就是0.5us一个bit,一个周期要16ms。应该是用STM32F103的TIMx和DMA吧。但是具体如何使用,有相关的例程吗?请教各位了。
此帖出自stm32/stm8论坛

最新回复

                                 看来用DMA+SPI有戏 还要看看TXE和传输结束之间的时间差是多少  详情 回复 发表于 2010-12-7 20:35
点赞 关注
 

回复
举报

61

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 这种情况,选择合适的时钟频率,然后把中断关了,直接循环发送,延时就靠指令来算好了。
此帖出自stm32/stm8论坛
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                麻烦LZ提醒一下曼彻斯特码是什么样的?为什么一个周期是16MS,而不是26或36MS?
此帖出自stm32/stm8论坛
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
一个bit是0.5us,一个周期发送32000个bit,总共16ms。
但是要求每个bit都是连续的。
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
我的程序还有sd卡和usb和网络功能,所以用中断是一定不行的。
马老师有一篇帖子也说了,这种用中断做是不行的。
有定时器的特殊功能做,但是有时要求那么多不同byte连成的bit连续发送,所以是不是要涉及到DMA方式。
具体问题还要请教各位了。
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                那么曼码到底是什么样的呢?
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
就是一串0和1的组合,设备要求单线传输。
0和1的组合,频率在2Mhz,也就是0.5us一个bit位。
我只是想知道这款cpu如何完成对一个io的高速的0和1的切换。
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 或者是要用DMA+SPI的方式吗?
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

9
 
送给 SDI 脚的输入信号必须遵循下列定义:
a. 有效输入数据必须为曼彻斯特编码,信号从高到低跳变表示"1",从低到高
跳变表示"0"
b. 在芯片上电后必须先发一次同步帧,以便芯片检测通讯的波特率。同步帧的
格式为:15’b111111111111111+4’b0001+11’b00000000000,在发送同步
帧后必须延时一段时间再发送数据帧,这样做是为了每个芯片都能准确检测
到通讯的波特率,延时时间(us)大于:连接芯片数÷通讯波率(MHz)×30
c. 在发送若干帧数据后,重新发送一次复位帧,等待1ms 之后,再发送一次同
步帧, 以便芯片消除积累误差, 复位帧格式为:
15’b111111111111111+4’b0100
d. 数据帧格式为:15’b111111111111111+4’b0010(数据头)+ 第一个芯片
39bit 数据 + 第二个芯片39bit 数据 + …… + 第n 个芯片39bit 数据
e. 第一个芯片为最先接收数据的芯片,芯片的数据格式为:1’ b0(标识位) + 12’
bxxxxxxxxxxxx(输出端口1 数据) + 1’ b0(标识位) + 12’ bxxxxxxxxxxxx(输
出端口2 数据) + 1’ b0(标识位) + 12’ bxxxxxxxxxxxx(输出端口3 数据),
x 为1 或则0
f. 数据先发送 MSB(最高位)
g. SDI 输入脚在空闲状态时,必须保持低电平
h. 同一帧数据发送过程中,必须连续发送,中间不能有中断,发送频率也不能
改变。
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 软件实现曼彻斯特编/解码?
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

11
 
你应该把数据先进行编码放入缓存,然后DMA只管顺序发送即可。

曼彻斯特编码也就2bit代表一位而已,采用双缓存乒乓处理即可
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

12
 
楼主你的这个要求用单纯翻转IO可能有点够呛,可能要用点非常规的方法。
因为没有时钟信号,你的传输方式要求在传输过程中一定不能被打断,DMA貌似满足不了这个要求

你的USB通讯用的是什么方式,数据量有多大
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

13
 
to 12楼:
关键就是单线传输的话,传输过程一定不能被打断。
usb通讯这部分已经搞定,可以吧sd卡中的数据当u盘读出。
现在关键就是发送部分。
我现在有点动摇了,估计要外加cpld或者fpga了。
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

14
 
如果真的用fpga的话,是否就可以一颗fpga上nios搞定所有呢?按理是可以的。
EP3C应该就行吧。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

15
 
                                照10楼说的做,不需要使用FPGA。
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

16
 
                                 放心吧,驱动TLS3001吧?我做过的,没问题。用SPI+DMA.
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

17
 
to 16楼:
对的,就是驱动TLS3001,你有qq不,可否交流一下?
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

18
 
                                 学习了。。。。
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

19
 
                                 一个定时器,一个DMA 完事!
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

20
 
                                对TIM+DMA可以完全搞定。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表