LPC1788--I2C设置驱动PCF8574 与特别注意事项
来源:互联网 发布:it网络工程师培训学校 编辑:程序博客网 时间:2024/05/16 11:11
简单记录LPC1788学习过程的寄存器操作---I2C学习
寄存器的直接操作可以比较直观学习,深入了解芯片功能!
特别注意事项:如果使用I2C0的P0_27与P0_28时一定要加外部上拉电阻!
/*------------I2C0初始化-------------*/
void I2C0_Init(uint32_t clk, uint32_t clockrate)
{
uint32_t temp;
LPC_IOCON->P0_27=0x21;
LPC_IOCON->P0_28=0x21;//配置IO
LPC_SC->PCONP |=(1<<7);//I2C0外设时钟开启
temp=clk/clockrate;//时钟频率分频寄存器
LPC_I2C0->SCLH=(uint32_t)(temp/2);
LPC_I2C0->SCLL=(uint32_t)(temp-LPC_I2C0->SCLH);
LPC_I2C0->CONCLR=(1<<2)|(1<<5)|(1<<6);//清标志位
LPC_I2C0->CONSET=(1<<6); //使能I2C0主模式
}
/*------------发送起始信号------------*/
void I2C0_Start(void)
{
uint32_t i=2000;
LPC_I2C0->CONSET=(1<<5); //发送起始信号while((LPC_I2C0->STAT !=0x08)&&(i--)); //等待返回状态
LPC_I2C0->CONCLR=(1<<5); //清除发送标识
}
/*------------发送停止信号-----------*/
void I2C0_Stop(void)
{
LPC_I2C0->CONSET=(1<<4); //发送停止信号
LPC_I2C0->CONCLR=(1<<3); //复位SI信号
}
/*------------写8位数据----------*/
void I2C0_WriteByte(uint8_t data)
{
LPC_I2C0->DAT=data;//写数据
LPC_I2C0->CONCLR=(1<<3); //数据载入后复位SI信号
}
/*------------写地址与读写模式-----------*/
void I2C0_WriteAddr(uint8_t addr,uint8_t rORw)
{
uint32_t i=2000;
if(rORw==1)while((LPC_I2C0->STAT!=0x40)&&(i--)); //读-返回状态
elsewhile((LPC_I2C0->STAT!=0x18)&&(i--));//写-返回状态
}
/*------------写数据-----------*/
void I2C0_WriteData(uint8_t data)
{
uint32_t i=2000;
while((LPC_I2C0->STAT!=0x28)&&(i--)); //数据写完成返回状态
}
/*------------读8位数据-----------*/
uint8_t I2C0_ReadByte(uint8_t last)
{
uint32_t i=2000;
{
LPC_I2C0->CONCLR=(1<<2)|(1<<3);while((LPC_I2C0->STAT!=0x58)&&(i--));
}
else
{
i=2000;
LPC_I2C0->CONCLR=(1<<2)|(1<<3);while((LPC_I2C0->STAT!=0x50)&&(i--));
}
return LPC_I2C0->DAT;//数据读
}
/*------------控制PCF8574-----------*/
void WritePCF8574(uint8_t addr,uint8_t pBuffer)
{
I2C0_Start();
I2C0_WriteAddr(addr,0); //写地址-写模式
I2C0_WriteData(pBuffer); //写数据
I2C0_Stop();
}
0 0
- LPC1788--I2C设置驱动PCF8574 与特别注意事项
- LPC1788--SSP设置驱动W25Q16--以及特别注意点
- I2C并口-----PCF8574
- LPC1788 nand驱动
- iic模块PCF8574驱动1602学习记载
- 树莓派学习笔记——I2C PCF8574 BCM2835 Library
- 树莓派学习笔记 ——I2C PCF8574 SysFs方式
- 树莓派学习笔记——I2C使用 PCF8574 Python SMBUS
- LPC1788 NVIC 的设置
- LPC1788---串口设置
- i2c 设备读写 与驱动
- linux中关于i2c驱动编写的注意事项
- LPC1788系统时钟的设置
- LPC1788系统时钟的设置
- Linux I2C核心、总线与设备驱动
- Linux I2C核心、总线与设备驱动
- I2C设备与驱动的关联
- Linux I2C核心、总线与设备驱动
- zookeeper入门
- 欢迎使用CSDN-markdown编辑器
- 用warshall算法求关系闭包(离散数学)
- PHP 5.3、5.4、5.5、5.6 中的新特性
- MYSQL计算时间间隔——————TimeStampDiff()
- LPC1788--I2C设置驱动PCF8574 与特别注意事项
- [leetcode] Excel Sheet Column Title
- 算法之递归练习
- Docker 使用方法总结之:管理工具 shipyard 的详细使用指南
- near指针,far指针,huge指针
- DEVICE_ATTR
- 【数据库基础概念与数据抽象】竹外桃花三两枝——数据库学习之路(2)
- java.io.FileNotFoundException: /storage/emulated/0/
- windows下socket套接字