IIC Demo
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
typedef struct {
|
||||
uint8_t (*CLK_SET)(uint8_t); // 设置时钟引脚状态的函数指针
|
||||
uint8_t (*SDA_SET)(uint8_t); // 设置数据引脚状态的函数指针
|
||||
uint8_t (*SDA); // 读取数据引脚状态的函数指针
|
||||
uint8_t (*SDA)(); // 读取数据引脚状态的函数指针
|
||||
uint8_t (*SDA_MODE)(uint8_t); // 设置数据引脚模式的函数指针
|
||||
uint8_t ADD; // IIC设备地址
|
||||
} HW_Dev_IIC;
|
||||
|
@@ -23,7 +23,7 @@ static inline uint8_t iic_WaitAck(HW_Dev_IIC dev, uint16_t timeout) {
|
||||
dev.SDA_MODE(IN);
|
||||
dev.SDA_SET(HIGH);DELAY1US();
|
||||
dev.CLK_SET(HIGH);DELAY1US();
|
||||
while (dev.SDA) {
|
||||
while (dev.SDA()) {
|
||||
time++;DELAY1US();
|
||||
if (time > timeout) {
|
||||
iic_Stop(dev);
|
||||
@@ -74,7 +74,7 @@ static inline uint8_t iic_R(HW_Dev_IIC dev, uint8_t ack) {
|
||||
dev.CLK_SET(LOW);DELAY1US();DELAY1US();
|
||||
dev.CLK_SET(HIGH);
|
||||
read <<= 1;
|
||||
if (dev.SDA)read++;DELAY1US();
|
||||
if (dev.SDA())read++;DELAY1US();
|
||||
}
|
||||
if (ack)
|
||||
iic_Ack(dev); //发送ACK
|
||||
|
@@ -27,4 +27,5 @@ void BufPrint(char *name,void *buf,unsigned char size,unsigned int len,unsigned
|
||||
printf("未指定类型大小");
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
Reference in New Issue
Block a user