stm32cubemx实现模拟IIC
https://blog.csdn.net/qq_45467083/article/details/109433847
感谢正点原子的开源支持,下面AP3216的驱动代码来自正点原子。
本实验使用模拟iic驱动AP3216C,不使用INT引脚。如果需要接收AP3216C中断,可以通过配置一个io输入中断进行处理。
//ap3216c.h
#ifndef __AP3216C_H
#define __AP3216C_H
#include "main.h"
typedef uint8_t u8;
typedef uint16_t u16;
typedef uint32_t u32;
#define AP3216C_ADDR 0X3C //AP3216C器件IIC地址(左移了一位)
u8 AP3216C_Init(void);
u8 AP3216C_WriteOneByte(u8 reg,u8 data);
u8 AP3216C_ReadOneByte(u8 reg);
void AP3216C_ReadData(u16* ir,u16* ps,u16* als);
#endif
//ap3216c.c
#include "ap3216c.h"
#include "IOI2C.h"
void delay_ms(u32 ms){
HAL_Delay(ms);
}
//初始化AP3216C
//返回值:0,初始化成功
// 1,初始化失败
u8 AP3216C_Init(void)
{
u8 temp=0;
IIC_Init(); //初始化IIC
AP3216C_WriteOneByte(0x00,0X04)