查看: 1256|回复: 2

[经验] 单片机初学者,应该怎么根据时序图来编写对应的程序过程

[复制链接]
  • TA的每日心情
    开心
    2019-11-4 13:48
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2020-4-9 09:23:05 | 显示全部楼层 |阅读模式
    分享到:
    刚刚拿到一个芯片,常用的芯片可以参考网上的例程来做深入了解,对于一个不常用的芯片来说,Datasheet几乎是使用芯片的唯一的资料,所以根据Datasheet时序图写出对应的驱动程序就尤为重要。

    本文根据一个简单的例子来阐述根据时序图来编写对应的程序过程。旨在讲解对于初学者应该怎么利用芯片的时序图编写符合要求的底层驱动程序(老鸟请跳过)。

    好了,直接开始。

    首先首先首先(重要的事情讲3遍)

    下载芯片的Datasheet,如果芯片使用的是标准的I2C、SPI、UART、1-WIRE等协议,那么直接使用现成的程序代码就行,满足速度的情况下模拟的硬件的怎么都行,(能抓老鼠的都是好猫,管他什么颜色)。

    如果芯片采用的读写数据协议并不是常用的通信协议,比如ADC0809这样子的,厂家会提供一个时序图,通常情况下,这时候我们会采用单片机的IO口模拟来对芯片进行控制。就是这样子的图啦

    有了这个图我们就能够根据它来编写驱动程序。

    其次,要清楚芯片与单片机的接线方式,千万不要小看这一步,接线错误导致程序没调出来是很难发现的。有时候线接错了还一个劲的改程序。话说这种蠢事情自己干了就行,千万不要说。

    然后,读懂时序图,本例中TLV5619共有4个端口(不是4个引脚),TLV5619是一个2.7 V TO 5.5 V 12-BIT PARALLEL DIGITAL-TO-ANALOG CONVERTER WITH POWER DOWN(2.7V到5.5V 12位带关断功能的并行DAC)。

    按照要求连接好线路之后,就要对单片机IO口进行初始化,配置端口的输入输出模式,有时候还会配置上拉下拉等等,不要搞错了,这些准备工作都做好了之后,就正式开始看时序图了。

    时序图故名思意就是时间顺序图,简单点说就是按照时间顺序数据和控制信号按照要求变化就是了,这里提供本人看时序图的一种方法,自称“扫描法”,就是用一个竖直的轴从左往右扫描,扫到谁 谁就变。

    本例中 我们看看初始状态,可以看出控制信号/WE、/CS、和/LDAC都是应该置‘1’,所以程序开始就应该确定端口的初始状态。所以程序开始就是/WE、/CS、和/LDAC置‘1’ 记为状态0

    接着就是/CS拉低开始时序图的第一步 程序中描述就是 CS_L;  记为状态1

    类似的把每个状态的每一端口的变化都标出来 如图

    随着时间顺序,依次完成状态0到状态9的转换

    每个状态对应的代码如下图

    最后,将代码整理一下做成函数。

    整理出来的代码就是这样子啦



    回复

    使用道具 举报

    该用户从未签到

    发表于 2020-4-10 14:44:24 | 显示全部楼层
    图片看不到,建议重新上传,或者自己做个PDF文档上传上来。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-10-19 04:31 , Processed in 0.124483 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.