PCA9548.c 879 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include "PCA9548.h"
  2. #include "delay.h"
  3. //////////////////////////////////////////////////////////////////////////////////
  4. // 9548 IIC Switch
  5. // 2202/12/X GHz_ljw
  6. // 2203/3/X GHz_ljw
  7. // 2203/4/X GHz_ljw 合并版
  8. //////////////////////////////////////////////////////////////////////////////////
  9. void PCA9548_Switch(u8 config){
  10. IIC_Start();
  11. u8 addr = PCA9548_ADDR << 1;
  12. IIC_Send_Byte(addr);
  13. // i2c_SendByte((ADDR_TCA9548A) | OLED_I2C_WR);
  14. if (IIC_Wait_Ack() != 0)
  15. {
  16. goto cmd_fail;
  17. }
  18. IIC_Send_Byte(config);
  19. if (IIC_Wait_Ack() != 0)
  20. {
  21. goto cmd_fail;
  22. }
  23. cmd_fail:
  24. IIC_Stop();
  25. }
  26. u8 PCA9548_Read()
  27. {
  28. u8 temp=0;
  29. IIC_Start();
  30. //IIC_Wait_Ack();
  31. u8 addr = (PCA9548_ADDR << 1) | 1;
  32. IIC_Send_Byte(addr);
  33. IIC_Wait_Ack();
  34. temp=IIC_Read_Byte(0);
  35. IIC_NAck();
  36. IIC_Stop();//产生一个停止条件
  37. return temp;
  38. }