KA_IX

  • 1553 主题
  • 1599 帖子
  • 9369 积分
  • 身份:LV6 初级工程师
  • E币:2640

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

2020-4-7 16:19:24 显示全部楼层
刚刚拿到一个芯片,常用的芯片可以参考网上的例程来做深入了解,对于一个不常用的芯片来说,Datasheet几乎是使用芯片的唯一的资料,所以根据Datasheet时序图写出对应的驱动程序就尤为重要。

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

好了,直接开始。

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

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

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

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

然后,读懂时序图,本例中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口进行初始化,配置端口的输入输出模式,有时候还会配置上拉下拉等等,不要搞错了,这些准备工作都做好了之后,就正式开始看时序图了。

时序图故名思意就是时间顺序图,简单点说就是按照时间顺序数据和控制信号按照要求变化就是了,这里提供本人看时序图的一种方法,自称“扫描法”,就是用一个竖直的轴从左往右扫描,扫到谁 谁就变。
0.gif
本例中 我们看看初始状态,可以看出控制信号/WE、/CS、和/LDAC都是应该置‘1’,所以程序开始就应该确定端口的初始状态。所以程序开始就是/WE、/CS、和/LDAC置‘1’ 记为状态0
2.jpg
接着就是/CS拉低开始时序图的第一步 程序中描述就是 CS_L;  记为状态1

类似的把每个状态的每一端口的变化都标出来 如图
3.jpg
随着时间顺序,依次完成状态0到状态9的转换

每个状态对应的代码如下图
4.jpg
最后,将代码整理一下做成函数。

整理出来的代码就是这样子啦
5.jpg
本文使用到的资源如下

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

最新评论

楼层直达:

wind_west

  • 16 主题
  • 61 帖子
  • 929 积分
  • 身份:LV3 中级技术员
  • E币:627
wind_west 2020-4-14 09:00:58 显示全部楼层
看到这编程界面,难道是喜爱的 code blocks 。
我要评论
1
31
广告
关闭 热点推荐上一条 /4 下一条
快速回复 返回列表