I2C总线的程序设计
发布时间:2008/11/24 0:00:00 访问次数:560
采用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总线输出数据子函数。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
采用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总线输出数据子函数。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)