FX3/CX3 模拟i2c
来源:互联网 发布:java人事工资管理系统 编辑:程序博客网 时间:2024/06/06 02:52
void delay(uint32_t t){ while(--t);//CyU3PBusyWait (t);}CyU3PReturnStatus_tIIC_Set_SDA(CyBool_t isHigh){ CyU3PReturnStatus_t status; status = CyU3PGpioSetValue (FX3_I2C_SDA, isHigh); return status;}CyU3PReturnStatus_t IIC_Set_SCK(CyBool_t isHigh){ CyU3PReturnStatus_t status; status = CyU3PGpioSetValue (FX3_I2C_SCK, isHigh); return status;}CyBool_t IIC_Read_SDA(void){ CyBool_t temp = CyFalse; CyU3PGpioGetValue (FX3_I2C_SDA, &temp); return temp;}void SDA_OUT(CyBool_t outValue){ CyU3PReturnStatus_t status; CyU3PGpioSimpleConfig_t gpioConfig; gpioConfig.outValue = outValue;//CyFalse;//0 gpioConfig.inputEn = CyFalse; gpioConfig.driveLowEn = CyTrue; gpioConfig.driveHighEn = CyTrue; gpioConfig.intrMode = CY_U3P_GPIO_NO_INTR; status = CyU3PGpioSetSimpleConfig(FX3_I2C_SDA, &gpioConfig); if (status != CY_U3P_SUCCESS) { CyU3PDebugPrint (4, "CyU3PGpioSetSimpleConfig for GPIO Id %d failed, error code = %d\n", FX3_I2C_SDA, status); }}void SDA_IN(void){ CyU3PReturnStatus_t status; CyU3PGpioSimpleConfig_t gpioConfig; /* Configure GPIO I2C_SDA as input */ gpioConfig.outValue = CyFalse; gpioConfig.inputEn = CyTrue; gpioConfig.driveLowEn = CyFalse; gpioConfig.driveHighEn = CyFalse; gpioConfig.intrMode = CY_U3P_GPIO_NO_INTR; status = CyU3PGpioSetSimpleConfig(FX3_I2C_SDA, &gpioConfig); if (status != CY_U3P_SUCCESS) { CyU3PDebugPrint (4, "CyU3PGpioSetSimpleConfig for GPIO Id %d failed, error code = %d\n", FX3_I2C_SDA, status); }}////////////////////////////////////////////////void IIC_Start(void){ SDA_OUT(1); IIC_Set_SDA(1); IIC_Set_SCK(1); delay(100); IIC_Set_SDA(0); delay(100); IIC_Set_SCK(0);}void IIC_Stop(void){ SDA_OUT(0); IIC_Set_SCK(0); IIC_Set_SDA(0); delay(100); IIC_Set_SCK(1); IIC_Set_SDA(1); delay(100);}uint8_t IIC_Wait_Ack(void){ uint8_t ucErrTime=0; SDA_IN(); IIC_Set_SDA(1);delay(25); IIC_Set_SCK(1);delay(25); while(IIC_Read_SDA()) { ucErrTime++; delay(25); if(ucErrTime > 100)//250 { IIC_Stop(); return 0; } } IIC_Set_SCK(0); return 1;}void IIC_Ack(void){ IIC_Set_SCK(0); SDA_OUT(0); IIC_Set_SDA(0); delay(50); IIC_Set_SCK(1); delay(50); IIC_Set_SCK(0);}void IIC_NAck(void){ IIC_Set_SCK(0); SDA_OUT(1); IIC_Set_SDA(1); delay(50); IIC_Set_SCK(1); delay(50); IIC_Set_SCK(0);}void IIC_Send_Byte(uint8_t txd){ uint8_t i; SDA_OUT(0);//TODO IIC_Set_SCK(0); for(i=0;i<8;i++) { CyU3PGpioSetValue (FX3_I2C_SDA, (txd&0x80)>>7); // if((txd&0x80)>>7) IIC_Set_SDA(1); // else IIC_Set_SDA(0); txd<<=1; IIC_Set_SCK(1); delay(50); IIC_Set_SCK(0); delay(50); }}uint8_t IIC_Read_Byte(unsigned char ack){ uint8_t i,receive=0; SDA_IN(); for(i=0;i<8;i++ ) { IIC_Set_SCK(0); delay(50); IIC_Set_SCK(1); receive<<=1; if(IIC_Read_SDA()) receive++; delay(25); } if (!ack) IIC_NAck(); else IIC_Ack(); return receive;}
阅读全文
0 0
- FX3/CX3 模拟i2c
- FX3/CX3 I2C error
- FX3/CX3 简介
- FX3/CX3 SPI
- FX3/CX3 Thread创建
- FX3/CX3 事件机制
- FX3/CX3 定时器
- FX3/CX3 timestamp
- FX3/CX3 延时
- FX3/CX3 flash
- FX3/CX3 JLINK 调试
- FX3/CX3 jtag debug
- FX3/CX3 CyU3PMutex
- FX3/CX3 DMA Overview
- FX3/CX3 M25P40存储器读写
- FX3/CX3 elf转为img文件
- FX3/CX3 REQ_VENDOR自定义usb命令
- FX3/CX3 yuv/rgb输出修改
- osg几何体的图元的遍历
- Spiral Matrix II:螺旋打印方阵
- 如何管住自己的log
- bitmap的六种压缩方式,Android图片压缩(转)
- Android Studio开发中途使用gitignore文件进行提交忽略
- FX3/CX3 模拟i2c
- java.sql.date java.util.date java.sql.timestamp的区别
- null与undefined目前的区别-学习笔记
- SylixOS双网卡冗余备份设计方案
- Python3.5——面向对象编程
- 第三章运算符与表达式
- 地图行政区域标注
- 像素级图像分割 pydensecrf安装出错
- MYSQL外键