新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > I2C总线的程序设计

I2C总线的程序设计

作者:时间:2011-07-20来源:网络收藏
  采用I2C总线工作方式驱动MAX518芯片时,MSSP模块在产生启动条件的基础上,连续发送3个字节信息,分别为地址字节、命令字节及所需转换的数椐字节,3个宇节发送完毕后,MSSP模块产停止条件,MAX518才开始进行模/数转换.

因为MAX518的地址字节为58H,所以只有向其发送58H地址时,才能选通它。命令字节可以为00H或01H 当为00H时,选择OUT0通逍输出模拟量:当为01H时,选择OUT1通道输出模拟量。

本程序中的命令字节为01H,即选择D/A1通道输出正弦波信号.待输出的数据量根掂需耍在00H~FFH间变化。MSSP模块产生启动条件后,地址字节、命令字节、待转换的数据发送成功,且产生停止条件时,SSIFG都会被置1。

因此在编写程序时,可以通过查询该标志位来判断相应的步骤是否完成。若该步骤没有完成,则继续等待查询;若已完成,则清除SSIFG标志位,继续进行下一步操作。本设计的程序流程如图1和图2所示。

  

图1 I2C的初始化程序流程   图2 主程序流程及I2C发送数据子程序流程   

实现代码如下。

(1)首先定义数据组存放正弦表,通过在数组名前加const标识,把该数组存放到ROM中.   

(2)初始化I2C模块,设置SCL为输入口、SDA为输出口,通过设HSSP7ADD寄存器来确定I2C的工作频率,最后使能I2C。   

(3)该字函数通过5个do-while语句成I2C的启动、发送地址字节、发送命令字节、发送数据字节和产生停止条件的功能,最后通过对SSPIF清0,清楚发送标志。   

(4)主函数3完成各个子函数的调用功能,在while循环中调用I2C总线输出数据子函数。  

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭