广告

原创 FPGA学习之基于TLC549的直流电压采集及显示

2017-5-23 22:21 786 0 分类: FPGA/CPLD

最近由于毕业论文的事,小编是忙的不可开交,今天抽出点时间写篇文章,冒个泡,以防大家把我给遗忘了,哈哈哈哈~

言归正传,今天我们的任务是通过FPGA控制TLC549模数转换芯片(ADC)采集直流电压值,并把采集到的电压值在动态数码管上显示出来。

首先我们看看AD采集的电路原理图。动态数码管部分的电路图之前已经介绍过,大家可查看之前的信息。

640.webp

诺,这就是原理图,是不是很简单,就一个TLC549芯片和两个上拉电阻,再什么也没有,也是简单的不能再简单了。既然原理图中用到了TLC549芯片,那么我们找找这个芯片的数据手册,看看手册中对这个芯片是怎么描述的。

640.webp (1)

640.webp (2)

从这两幅图中我们可以看出来,TLC549是一个8位的CMOS模数转换芯片(ADC),其与微控制器之间是SPI通信。我们从第二幅图中可以看出来,在读数据的时候,首先将CS信号拉低,然后8位数据的最高位在时钟的低电平期间可读出来,剩下的6位数据在时钟的下降沿输出。并且从图中可以看出来,TLC549的最大IO CLOCK的频率不超过1.1MHz。

既然通过数据手册知道了TLC549芯片的特性,下面我们开始编写TLC549驱动模块的FPGA程序,在编写程序的时候,我们需要考虑以下几个问题:

1,TLC549芯片是串行通信,那么读数据时序怎么产生?

2,如何控制TLC549芯片开始采集数据?

3,如何判断TLC549芯片数据采集完成?

4,采集完成的数据以什么方式传递给下一个模块?

对上面这几个问题,小编试着给大家分析分析,如有不对,请大家多多指正哟~

这四个问题对于学过的单片机同学不难,用个for循环再加个延时函数就完成的事,可是在FPGA中不是这么简单。FPGA是纯数字电路,对于以上四个问题,我们需要已电路的知识来解决。

首先,对于读数据的时序,我们通过状态机的方式来实现,第一个状态时钟线拉高,第二个状态时钟线拉低,依次循环下去,可得到这个时序。对于开始采集数据的控制,我们用一根start信号线来控制,给TLC549驱动模块一个start信号,该模块接收到start信号之后,开始读数据,读完数据之后用一根ready信号线来指示数据读取完成,下一个模块接收到该ready信号时,开始读取TLC549驱动模块得到的8位数据,该数据以并行的方式传递给下一个模块。

已上是解决这四个问题的思路,下面我们贴出该驱动模块的电路符号图,由于该部分代码过长,就不全部贴出来了,感兴趣的同学可以给小编发信息,小编会把全部工程文件发给你哟~,小编的微信公众号是“xiaomage_group”。

640.webp (3)

下图是用示波器捕捉到的实际波形,从图中可以看出时钟信号的频率为500kHz,满足时序要求。

640.webp (4)

我们将从TLC549中得到的8位数据进行处理,转换成实际的电压值并显示出来。首先将该数据扩大100倍,然后分离出百位、十位、各位,将分离出的数据在动态数码管上显示出来,在显示的过程中,将小数点加在百位后面,此时数码管上显示的数据即为实际的电压值。

640.webp (5)

下图为控制模块的电路符号图,控制模块实现了对TLC549开始转换数据的控制以及查询是否采集完成,并把采集到的数据进行处理。

640.webp (6)

由于该系统的所有代码过于太长,所以不一一全部贴出来了,下面只贴出整个系统的框图。再次强调一下,感兴趣的同学可以给小编发信息,小编会把全部工程文件发给你哟~,小编的微信公众号是“xiaomage_group”。

640.webp (7)

这就是整个系统的框图,所有的电路符号的电气连接都在这里。

程序设计完毕之后,下面我们将程序下载入FPGA电路板中,看看实际的效果怎么样,会不会将实际的电压在数码管上显示出来。

640.webp (8)

640.webp (9)

通过图片的展示,可以看出我们该设计最终完成了当初的设计要求,实现了相应的功能,小编也是很开心啊,哈哈哈哈~

更多详细内容请大家关注微信公众号“xiaomage_group”查看哟~


广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
小马哥电子 2017-08-17 17:17
数字收音机制作(1)
之前一直想做一款数字收音机来着,但是由于各种原因,刚画完原理图就放弃了。这次抽出时间,重新设计方案,制作一款小巧mini型的数字收音机。    本次重新设计方案之后,该收音机目前可具备的功能有:   ...
小马哥电子 2017-06-06 12:11
项目实战之MOS管啸叫
最近做一个点火器项目时要使用单片机的IO口控制一个36V的P沟道MOS管的开关,但是在电路的设计验真阶段,出现了MOS管的啸叫。MOS管竟然啸叫,我的天,这还是第一次碰到。下面我来还原一下场景。 首先...
小马哥电子 2017-05-18 18:55
FPGA学习之高速ADC采集
ADC(Analog-to-Digital Converter,模拟-数字转换器)在硬件电路中是经常见到的器件,音频信号的采集、温度的采集等等,凡是涉及到模拟信号转数字信号的电路,都会用到ADC。 A...
小马哥电子 2017-05-15 11:19
FPGA学习之基于动态数码管的时钟显示
动态数码管的原理之前已经说过,但是之前说的只是它的工作原理,今天我们来说说动态数码管的应用。今天通过FPGA编程,驱动8个动态数码管显示“时-分-秒”。 下图是4位共阳动态数码管的工作时序。某一时刻控...
小马哥电子 2017-05-12 22:44
FPGA学习之基于74HC164的静态数码管显示
今天我们通过两个静态数码管实现0-99的计数,且每500ms计一个数。 我们首先来看看基于74HC164的静态数码管显示的电路原理图~ 这就是两个静态数码管的原理图。大家从图中可以看出,两个数码管的...
我要评论
0
0
广告
关闭 热点推荐上一条 /1 下一条