通过IIC通讯实现PWM数据输出。IIC通用读写程序。
PCA9530可以输出
频率:最大152Hz,
占空比:可调0-100%,
通道:2路PWM。
一、地址配置
A0拉低,写地址为0xc0
读取地址为0xC1
二、程序
官方给的例子,利用地址自增模式,写入数据,比较方便操作。
typedef unsigned char uint8_t
#define PCA9530_adrr 0xC0 //写地址
uint8_t PCA9530_data[5] = {0x00,0x80,0x00,0x40,0x0E};
/*---------------------------------------------------------------
PCA9530写操作
@arg:address 0x11为自动增加写入操作。
@date:PSC0 PWM0 PCS1 PWM1 LED0&LED1
----------------------------------------------------------------*/
void PCA9530_write(unsigned char address,unsigned char* date)
{
uint8_t i;
IIC_Start();
IIC_Send_Byte(PCA9530_adrr); //PCA9685写地址 0xc0
IIC_Ack();
IIC_Send_Byte(address); //
IIC_Ack();
for(i = 0;i<5;i++) //循环5次将数据写入PCA9530对应寄存器中
{
IIC_Send_Byte(date[i]);
IIC_Ack();
}
IIC_Stop();
}
int main()
{
IIC_init();
PCA9530_write(0x11,PCA9530_data);
return 0;
}
注意,程序正常执行后,LED0和LED1引脚没有PWM波,需要加负载才能检测到。我遇到过这样的问题,加负载后,测试PWM频率占空比等数据正常。