打印

关于时钟脉冲与通讯的讨论

[复制链接]
2228|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
万山21|  楼主 | 2011-8-28 18:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想问下前辈们,是不是所有需要时钟脉冲通信的芯片,往它里面写数据都是在时钟信号的下降沿写的?而读的时候是在时钟信号为高电平时读出的?、、、、到现在为止我遇见的好像都是,不知道可否以偏概全、、、、

相关帖子

沙发
chunyang| | 2011-8-28 18:38 | 只看该作者
这可不一定,一切以器件手册为准。

使用特权

评论回复
板凳
万山21|  楼主 | 2011-8-28 20:02 | 只看该作者

回chunyang

chunyang哥,想请教下,我写12864的串口程序,有关时序图只有这两个


怎样判断它是在上升沿写数据还是在下降沿写数据,或者是其他情况?

使用特权

评论回复
地板
万山21|  楼主 | 2011-8-28 20:36 | 只看该作者
本帖最后由 万山21 于 2011-8-28 20:39 编辑

抱歉,传晚了!这两个图

clip_image002.jpg (20.61 KB )

clip_image002.jpg

使用特权

评论回复
5
wangjun403| | 2011-8-28 22:30 | 只看该作者
看起来好像是上升沿

使用特权

评论回复
6
lisijun100| | 2011-8-28 23:50 | 只看该作者
:lol 学习之

使用特权

评论回复
7
chunyang| | 2011-8-29 01:11 | 只看该作者
4楼图很显然是上升沿锁存的。

使用特权

评论回复
8
万山21|  楼主 | 2011-8-29 08:53 | 只看该作者
8# chunyang
是通过第一个图看出来的?、、、、还有就是,我见好多程序上在每次上升沿传送一个bit之后会把SID拉低,哥哥觉得有没有那个必要?我试了好像不拉低也行,不知道人家写程序的时候是咋想的、、、

使用特权

评论回复
9
万山21|  楼主 | 2011-8-29 09:20 | 只看该作者

RE:更正下

刚才又试了下,发现把SID=0省去不行。。。。。。。。可是、、为什么呀?毕竟我们写程序的时候只有那两个时序图,可图上好像没有将SID拉低的信息啊,反而第二个图是最后将SID拉高了、、、疑惑中。。。。。

使用特权

评论回复
10
yewuyi| | 2011-8-29 10:18 | 只看该作者
拉高是为了接下来的拉低。

使用特权

评论回复
11
jack_shine| | 2011-8-29 12:28 | 只看该作者
你看valid data  中间包含着时钟的上升沿还是下降沿

使用特权

评论回复
12
cobraking| | 2011-8-29 14:52 | 只看该作者
事实上大多数情况都是时钟的上升沿采样数据的。

使用特权

评论回复
13
万山21|  楼主 | 2011-8-29 15:18 | 只看该作者
嗯、、现在上升沿是懂了。可还是不明白为什么要将SID拉低、、、、、

使用特权

评论回复
14
cobraking| | 2011-8-29 17:23 | 只看该作者
从第二个图看,有很多地方SID是要求为0的,但显然不是每位传送后都要拉低。RS,D4,D0后需要拉低,D7到D4之间只要切换数据就行了。

使用特权

评论回复
15
万山21|  楼主 | 2011-8-29 17:47 | 只看该作者

回楼上

我定义了一个写bit函数
void write12864_bit(bit B)
{
SID=B;
delay(1);
CLK=0;
delay(1);
CLK=1;
delay(1);
CLK=0;
delay(1);
SID=0;
}
然后在写Byte时通过循环调用写bit来完成。经调试证明,将上面函数中的SID=0去掉后功能上便不能达到。、、、大家说说会是肿么回事?

使用特权

评论回复
16
cobraking| | 2011-8-29 17:53 | 只看该作者
光看一bit的没用,你琢磨下送一byte的波形是否符合图上的要求。

使用特权

评论回复
17
万山21|  楼主 | 2011-8-29 20:15 | 只看该作者
17# cobraking 我实在琢磨不出来,你帮我看看吧
这是写数据的程序,24bit
void write12864_dat(uchar dat)
{
        uchar i;
        for(i=0;i<5;i++)
                write12864_bit(1);
        write12864_bit(0);
        write12864_bit(1);
        write12864_bit(0);
        for(i=0;i<4;i++)
        {
                if(dat&0x80)
                write12864_bit(1);
                else write12864_bit(0);
                dat=dat<<1;
        }
        for(i=0;i<4;i++)
                 write12864_bit(0);
        for(i=0;i<4;i++)
        {
                if(dat&0x80)
                write12864_bit(1);
                else write12864_bit(0);
                dat=dat<<1;
        }
        for(i=0;i<4;i++)
                 write12864_bit(0);
}
这里面就没有SID呀。。。。。。。。

使用特权

评论回复
18
万山21|  楼主 | 2011-8-30 08:19 | 只看该作者
一早儿起来先顶下。大家帮忙看看啊!

使用特权

评论回复
19
万山21|  楼主 | 2011-8-30 11:10 | 只看该作者
再顶、、、不相信等不来个银、、、、

使用特权

评论回复
20
cobraking| | 2011-8-30 11:48 | 只看该作者
程序好像没问题。要不你用示波器两通道单步触发抓个波形研究研究。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:不断学习中。。。。。

0

主题

267

帖子

1

粉丝