da_wei 发表于 2011-5-27 22:40:24

有一种单总线工作频率800k,我现在有几种想法请大家评判。

先上传芯片数据手册吧点击此处下载 ourdev_643603HLLVCD.pdf(文件大小:550K) (原文件名:UCS1903.pdf)
做的LED像素灯,这个芯片可以级联1024个。
大家可以看他的芯片操作用的是单总线,归零的编码方式。
数据格式http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_643606XJ70LU.png
(原文件名:QQ截图未命名.png)

为了达到他的高速模式即800khz

我想这么做,我们用cortex-m0来做,
第一:如果用定时器来模拟IO 800Khz的翻转,前面马潮马老师有一篇文章介绍用IO实现1MHZ的方波,定时器模拟IO翻转肯定是不可能的。pass
第二:就是用软件延时来做IO的翻转从而实现数据的发送,感觉这么做很耗时。pass
第三:我想用uart来模拟单总线的方式,这个比18B20的要简单的多,18B20要考虑双向通信,而目前的芯片是只收不发的,这就简单很多了,单片机的uart有6,7,8,个数据位加1个或者2个停止位,那么现在可以设计加停止在内的一共8个bit来表示现在的 单总线通信的1个bit,现在问题来了根据单片机的数据手册最大的波特率为921600,那么921600/8,单总线的频率只有100多k达不到我操作800KHZ的要求。pass
第四:我想用SPI总线来模拟这个单总线的操作,SPI一次发送的数据为16,24,32bit,用其中的8bit来表示现在单总线的1个bit应该没有问题,spi的只用其中MOSI这根线,根据数据手册来看要想SPi的速度达到800K*8= 6.4M 或者 低速模式 400K*8= 3.2M应该是问题不大了

以上是我的个人想法,请各位评判一下最后的方案如何?我现在只能等到芯片到了 再测试方案是不是行得通了。

如果大伙有好的想法,希望不吝赐教,感谢

da_wei 发表于 2011-5-28 09:23:47

自己顶上去,,大家评论一下啊

fnems 发表于 2011-5-28 10:01:39

表示在STM8下用8MHz时钟,IO模拟,正好能达到1Mbps的输出速度。
自己是根据TM1812写的,每个芯片需要96个位的数据。所以写一个芯片要用96us。
IO模拟输出的时候要关中断。

如果用16MHz的时钟,那么IO模拟的时候能够并行输出3channel的数据。
当然,这要用3个IO来实现。

另外,根据自己的实验,芯片敏感的是高电平脉冲时间,低电平时间关系不大,
只要不是太长(长到让芯片以为是个reset)就能够被芯片识别。

da_wei 发表于 2011-5-28 10:37:15

谢谢【2楼】 fnems

我准备用第四种方案试试,

另外您说的那种方案还是比较耗时啊,要是一边读SD卡,还是会有影响的

adda 发表于 2011-5-28 12:16:50

mark

wb0110 发表于 2016-5-1 15:00:28

我觉得可能要用cpld把,stm32处理这样的通信都不一定能够。

csy1991hf 发表于 2021-1-25 20:59:15

mark一下

polarbear 发表于 2021-1-26 00:46:35

定时器0.5us 触发DMA 向GPIO送数据;

不耗CPU资源;缺点是RAM利用率低, 一个位要占用5个bit

wowangru 发表于 2021-1-26 14:03:08

fpga太easy。

zxq6 发表于 2021-1-26 14:14:43

wowangru 发表于 2021-1-26 14:03
fpga太easy。

这能实现一对多,双向通信吗?

wowangru 发表于 2021-1-26 14:25:29

zxq6 发表于 2021-1-26 14:14
这能实现一对多,双向通信吗?

so easy!你可以自己设计你要的芯片
页: [1]
查看完整版本: 有一种单总线工作频率800k,我现在有几种想法请大家评判。