02.26 如何弄懂单片机时序?

草莓味屠夫


单片机时序,我的理解是依据时钟信号,遵循标准,传输数据的过程。那么如果要弄清楚单片机时序,首先需要先弄清楚单片机的时钟信号,时钟信号驱动内核、外设工作。那么时钟信号从哪里来,又如何驱动内核,外设工作呢?先从晶振说起。

晶振

晶振,全称是石英晶体振荡器,是一种高精度和高稳定度的振荡器,通过一定的外接电路来,可以生成频率和峰值稳定的正弦波。

该正弦波信号通过单片机内部的时钟电路,可倍频/分频为需要的时钟信号频率,如原始晶振8M,可以最终产生72M的时钟给内核使用,到达内核与外设的时钟。

时钟周期是单片机中最基本的、最小的时间单位。在一个时钟周期内,内核仅完成一个最基本的动作,一个时钟周期从RoM中取一条指令,然后下一个时钟周期执行,周而复始。

时钟差不多了,那么时序基于时钟信号,外设以spi为例说明时序如何实现的。

时序(SPI)

SPI主要有一个时钟CLOCK,两个数据线MISO/MOSI,其中CLOCK由主动发起的外设产生,如设备1的外设要读设备2的外设,那么设备1的外设产生时钟,设备2的外设只能由设备1的外设时钟操控。

如上图所示:

设备1外设产生时钟1时,设备1外设通过数据线MOSI线输出1位,同时设备2外设通过MISO数据线输出1位;8个时钟,就输出8位数据,即1个字节传输完成。

设备1外设通过MOSI输出的数据,被设备2外设的MISO接收,同理,设备2外设通过MOSI输出的数据,被设备1外设的MISO接收,如下图:

同时设备1与设备2传输前约定传输规则:

1、我们从时钟上升沿输出数据,从时钟下降沿采集数据,即读取数据;

2、我们每个字节数据都是先输出最低为,然后再输出最高位。

以上就是SPI的时序。

其它外设时序

还有其它I2C时序、串口时序等等,都有自己的传输约定。


以上,个人观点。


小扇子的开发笔记


时序对于数字电路而言非常重要,可以说时序是数字电路正常工作的基础。说到时序,一般是指可编程器件的编程方法,在单片机编程时,需要根据被控芯片的时序去写程序,把芯片手册上规定好的时序用代码来实现,放可以实现单片机和芯片之间的通讯。下面以几种常用芯片的时序来简单介绍一下如何看懂时序。

1

IIC通讯的开始/结束时序

IIC是常用的芯片间的通讯方式,也叫I2C,适合于PCB板内近距离的通讯,总共具有两跟线,可挂接不同地址的多个设备,其硬件连线如下图所示。

IIC在通讯时需要首先发送一个开始信号,数据结束时需要发送结束信号,开始和结束就在器件手册上就给出了时序图,在编程时就需要用C语言代码去实现开始和结束的时序,时序图如下所示。

SCL是IIC的时钟线,SDA是数据线,SDA数据如何传输需要在特定的SCL时序上。从图中可以看出,在开始时,必须SCL是高电平,而SDA是下降沿,这就是开始的时序。在发送结束信号时,必须让SCL为高电平,让SDA是上升沿,这就构成了结束信号。用C语言代码所实现的结束信号如下所示。

2

IIC数据传输时的时序

IIC在发送完开始信号后,就要开始发送数据,发送数据的过程也必须得遵守IIC的时序,IIC数据传输的时序如下图所示。

从时序图上,可以看出,在SCL为高电平期间是不允许SDA数据发生变化的,如果要改变SDA数据必须发在SCL为低电平期间。这就是这个时序图的含义。单片机在编程时要遵循这个规则才可以。

时序图是编程的依据,在写代码时必须要严格按照芯片手册上的时序图,否则通讯失败。所以,时序图这个东西要多看,多写代码。

以上就是这个问题的回答,感谢留言、评论、转发。更多电子设计、硬件设计、单片机等内容请关注本头条号:玩转嵌入式。感谢大家。


玩转嵌入式


弄一本51单片机教材,关注晶振,基本时序章节,特别关注读写存储器的时序,能够提出疑问了,就可以算开始了。


分享到:


相關文章: