查看原文
其他

如何根据芯片手册时序图编写驱动程序

Ton 电子开发学习 2021-01-31

对于电子开发者来说,刚刚拿到一个芯片,常用的芯片可以参考网上的例程来做深入了解,对于一个不常用的芯片来说,Datasheet几乎是使用芯片的唯一的资料,所以根据Datasheet时序图写出对应的驱动程序就尤为重要。

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

 



好了,直接开始。

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



下载芯片的Datasheet,(个人常用http://www.21icsearch.com/)如果芯片使用的是标准的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的转换

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


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

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





链接:http://pan.baidu.com/s/1mi4MCgo 密码:75ln(含测试代码,发布相关的图像等)


因编者能力有限,文中难免有错误或不足,欢迎指正。



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存