嵌入式编程之时序图讲解


嵌入式编程之时序图讲解

  对于芯片驱动的编写,需要严格按照芯片手册上的时序图上的定义。看懂时序图这是每个合格嵌入式软件工程师都要掌握的基本技能,为此特意找到下面这个例子,用这个例子介绍时序图还是比较直观的。

图中时序线的名称及作用

    RS:数据/状态字选择线 RS = L:传输状态字 RS = H:传输数据;

    RW:读/写操作选择线 RW = L:写状态 RW = H:读状态;

    E:片选 E = L:芯片处于关闭状态 E = H:芯片处于使能状态;

    DB:数据传输总线;

图中标注处说明

    1处:高电平;

    2处:低电平;

    3处:包含了高低线,控制线代表配置为高低均可,数据线代表传输的是数据;

    4处:竖线代表的是生命线,代表一个对象在一段时间内的存在;

    大家仔细观察会发现有很多t开头的标注,这些标注是非常重要的,时序图是一定要有时间定义的。下图为时序图的时序参数,在编写代码的时候一定要参照图中定义的时间。

 

时序图读操作编程

 

INT8U ReadData(void)

{

    INT8U iResult;

    E = L;           /* 芯片处于关闭状态 */

    RS = H;         /* 选择传输数据模式 */

    RW = H;         /* 选择读操作 */

    DelayNS(30);       /* tSP1 最小值:30ns 注意:在这里这么写只想让大家对时间概念深刻记忆一下, 根据控制器的执行速度可以省略掉,在很多单片机中一条指令执行时间大于30ns*/

    E = H;           /* 芯片使能 tR 代表IO口翻转速度,速度取决于控制器硬件性能 */

    DelayNS(30);     /* tD为数据建立稳定时间,最大为100ns */

    iResult = DB;     /* 读出数据,DB代表的是实际控制器数据IO口 */

    DelayNS(120);    /* tPW为片选信号的保持时间 */

    E = L;           /* 关闭芯片,停止数据读取 */

    DelayNS(10);     /* tHD1为地址信号的保持时间 */

    RS = L;

    RW = L;

    return iResult;

}

 

转自:https://blog.csdn.net/snail_turbo/article/details/20568237


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM