全部博文(404)
分类: LINUX
2008-09-26 11:06:25
/*
* 2.6内核IIC驱动程序
*
* 1.四种模式的IIC驱动编写介绍
* 2.一个完整的IIC驱动(从器件接收模式,并且是裸写驱动)
*
* 1.1 开启从器件接收模式的示例
* R_IICCON = 0xE2; // 使能ACK,使能中断
* R_IICADD = 0xAA; // 从器件地址
* R_IICSTAT = 0x10; // 设置从器件接收模式
*
* 进入中断处理,读收数据:
* unit8_t ch = R_IICDS & 0xff; // 读取数据寄存
* R_IICCON &= 0xEF; // 清除IICCON[4]恢复中断响应
* RET;
*
* 1.2 开启从器件发送模式的示例
* R_IICCON = 0xE2; // 使能ACK,使能中断
* R_IICADD = 0xAA; // 从器件地址
* R_IICSTAT = 0x50; // 设置从器件接收模式
*
* 进入中断处理,发送数据:
* unit8_t ch = extern_buffer[i]; // 取得待发送到从器件的数据
* R_IICDS = ch; // 写入数据到IICDS
* R_IICCON &= 0xEF; // 清除IICCON[4]恢复中断响应
* RET;
*
* 以切换模式的方式结束发送。
*
* 1.3 开启主器件发送模式的示例
* R_IICCON = 0xE2; // 使能ACK,使能中断
* R_IICSTAT = 0xD0; // 设置主器件发送模式
* R_IICDS = 0xD0; // 写入从器件地址到IICDS寄存器
* R_IICSTAT = 0xF0; // 送出IICDS中的数据
*
* ACK并进入中断处理:
* uint8_t ch = extern_buffer[i]; // 取得待发送到从器件的数据
* R_IICDS = ch; // 再次写入数据到IICDS
* R_IICCON &= 0xEF; // 清除IICCON[4]恢复中断响应
* 结束发送:
* R_IICSTAT = 0xD0; // 置IICSTAT[5]为0,产生停止条件
*
* 1.4 开启主器件接收模式的示例
* R_IICCON = 0xE2; // 使能ACK,使能中断
* R_IICSTAT = 0x90; // 设置主器件接收模式
* R_IICDS = 0xD0; // 写入从器件地址到 IICDS
* R_IICSTAT = 0xB0; // 送出IICDS中的数据
*
* ACK并进入中断处理:
* uint8_t ch = R_IICDS & 0xFF; // 读取一个八位序列
* R_IICCON &= 0xEF; // 清除IICCON[4]恢复中断响应
*
* 结束接收:
* R_IICSTAT = 0x90; // 置IICSTAT[5]为0,产生停止条件
*/