在线时间7266 小时
UID3426478
注册时间2017-9-25
NXP金币5384
TA的每日心情 | 擦汗 昨天 15:50 |
---|
签到天数: 1874 天 连续签到: 5 天 [LV.Master]伴坛终老
超级版主
 
- 积分
- 112714
- 最后登录
- 2025-8-31
|
本帖最后由 stm1024 于 2019-3-19 22:04 编辑
最近真特么忙啊。有时间赶紧把IIC测试了一下。之前论坛里面已经有把PCA9551玩的各种溜的网友,也大致瞄了一下,应该采用的是CMSIS库,这个其实挺不错的,但是我已经选择了LPCOpen,就打算一条路走到黑了,操起PCA9551的datasheet看了一会,就可以开搞了。以下了我使用该库写的测试例程。
talk is cheap,上代码:
- #include "chip.h"
- #include "gpio_17xx_40xx.h"
- #include "i2c_17xx_40xx.h"
- #define PCA9551_I2C_ADDR (0xc0>>1)
- #ifndef CHIP_LPC175X_6X
- #define CHIP_LPC175X_6X
- #endif
- uint8_t buff[2]={0,0};
- uint8_t cache;
- void SystemInit()
- {
- Chip_SetupIrcClocking();
- SystemCoreClockUpdate();
- }
- int main()
- {
- LPC_IOCON->PINSEL[1]=0x01400000;
- Chip_I2C_Init(I2C0);
- Chip_I2C_SetClockRate(I2C0,100000);//100KHz
- NVIC_DisableIRQ(I2C0_IRQn);
- Chip_I2C_SetMasterEventHandler(I2C0, Chip_I2C_EventHandlerPolling);
- //config pwm0
- buff[0]=1;
- buff[1]=18;
- Chip_I2C_MasterSend(I2C0,PCA9551_I2C_ADDR,buff,2);
- buff[0]=2;
- buff[1]=128;
- Chip_I2C_MasterSend(I2C0,PCA9551_I2C_ADDR,buff,2);
- //config pwm1
- buff[0]=3;
- buff[1]=5;
- Chip_I2C_MasterSend(I2C0,PCA9551_I2C_ADDR,buff,2);
- buff[0]=37;
- buff[1]=240;
- Chip_I2C_MasterSend(I2C0,PCA9551_I2C_ADDR,buff,2);
- while(1)
- {
- buff[0]=0;
- Chip_I2C_MasterSend(I2C0,PCA9551_I2C_ADDR,buff,1);
- Chip_I2C_MasterRead(I2C0,PCA9551_I2C_ADDR,&cache,1);
- if((cache&0x0f)==0x0e)
- {
- buff[0]=6;
- buff[1]=0x55;//all off
- Chip_I2C_MasterSend(I2C0,PCA9551_I2C_ADDR,buff,2);
- }
- if((cache&0x0f)==0x0d)
- {
- buff[0]=6;
- buff[1]=0x00;//all on
- Chip_I2C_MasterSend(I2C0,PCA9551_I2C_ADDR,buff,2);
- }
- if((cache&0x0f)==0x0b)
- {
- buff[0]=6;
- buff[1]=0xaa;//blink0
- Chip_I2C_MasterSend(I2C0,PCA9551_I2C_ADDR,buff,2);
- }
- if((cache&0x0f)==0x07)
- {
- buff[0]=6;
- buff[1]=0xff;//blink1
- Chip_I2C_MasterSend(I2C0,PCA9551_I2C_ADDR,buff,2);
- }
- }
- //return 0;
- }
复制代码 听说现在流行发GIF了?
最后低调地吐槽一下,这个类库特么很多PINSEL都丢着没管,这样很影响使用啊喂。
|
|