刘彦文-嵌入式系统实践教程-CH6清华大学出版社.pptVIP

刘彦文-嵌入式系统实践教程-CH6清华大学出版社.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 实验例程及 驱动程序分析(二) 6.1 DAC应用程序编程举例 及驱动程序分析 6.1.1 DAC硬件基础 DAC(Digital to Analog Converter,数模转换器)也称D/A转换器,是一种用于将微处理器输出的数字量,转换为模拟量的电路模块。DAC模块一般是一个单独的芯片,通过不同的接口电路与微处理器连接。 ⒈ D/A转换器 常用的D/A转换器有8、10、12、14、16bit的,D/A转换器将微处理器送来的二进制数,转换为对应的模拟量输出。 转换器输出分为电压和电流两种方式,电压输出型DAC较为常用。 不同的芯片输出电压范围也不相同,例如有输出0~5V、0~3.3V、-5V~5V的。有的DAC芯片,由于片外引脚连接方法不同,输出电压也不同。比如依不同的连接方法,对相同的芯片,可以有0~2.048V、0~4.096V、-2.048V~2.048V几种输出。 微处理器与DAC芯片连接,依不同的DAC芯片,有不同的连接方法。 常用的有通过并行接口连接、SPI(Serial Peripheral Interface,串行外设接口)连接等多种方式。 由微处理器送往DAC芯片的二进制数,也依DAC芯片的不同,使用不同的编码格式,常用的有原码、补码、BCD码等格式。 ⒉ MAX504 D/A转换器简介 MAX504芯片,是一款低功耗、电压输出型10位数模转换器。 片内操作可以使用单一的+5V供电电源,也可以使用+5V及0V到-5V两路供电电源。 MAX504芯片与微处理器连接采用SPI接口,串行传输数据。 在微处理器发出片选信号CS#有效期间,MAX504的SPI端口收到的2字节数据中,第1字节最高4位不使用,第2字节最低2位必须为00b,其余10位进行D/A转换。 转换输出的电压,依芯片引脚的不同连接方法,有三种: 0~2.048V; 0~4.096V; -2.048V~2.048V。 图6.1 MAX504芯片内部功能模块 图6.2是MAX504芯片引脚的一种连接方法(图中没画出与微处理器的连接),对应的D/A转换输出电压范围为0~4.096V。表6-2对应图6.2,表示输入的10位二进制数与转换输出电压的对照关系。 图6.2 输出电压范围为0~4.096V引脚的连接 6.1.2 DAC应用程序编程举例 ⒈ 芯片连接 图6.3的连接方法使MAX504芯片D/A转换输出电压范围为0~4.096V,输出信号AVOUT0被引到J1001端子,供测量使用。 图6.3 系统中MAX504芯片连接举例 ⒉ 驱动程序模块加载 驱动程序模块名为s3c2410-exio.o,用insmod命令加载。 ⒊ 应用程序编程举例 在下面的例6.1中,程序首先打开“/dev/exio/0raw”字符设备文件, 打开成功后,进入for循环: 循环中提示输入一个浮点数,范围在0.0-4.096之间,超过这个范围则程序结束; 然后C语言库函数scanf(),等待并从标准输入设备读入一个浮点数; 输入浮点数如果不在范围内,则退出for循环; 输入浮点数内在范围内则把输入浮点数变成0-1023之间的一个整数,由ioctl()系统调用函数,使得驱动程序将这个整数通过SPI接口送到DAC; 然后在标准输出设备显示这个整数对应的电压值;重复循环中的语句。 程序编译后,需要通过mount命令挂接NFS,然后在目标板执行这个文件。 执行过程中用户在标准输入设备输入的浮点数,表示的是希望DAC转换后得到的电压值,可以使用万用表在目标板相应端子测量DAC的输出电压,进行验证。 例如用户输入1.0,则DAC输出电压为1.0V;用户输入2.5,则DAC输出电压为2.5V。 【例6.1】DAC应用程序举例。 (代码见教材) 6.1.3 DAC驱动程序主要代码分析 ⒈ 模块的初始化函数、清除函数 ⑴ 模块的初始化函数 模块的初始化函数格式如下: int__init s3c2410_exio_init(void) { /*初始化代码*/ } module_init(s3c2410_exio_init); /*说明内核初始化函数所在位置*/ 模块的初始化函数是由insmod命令对应的程序执行时调用的。初始化函数内部对SPI占用的I/O端口初始化、设置SPI操作模式,使SPI可用。 执行初始化函数: ·

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档