AT24C128.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #ifndef AT24C128_H
  2. #define AT24C128_H
  3. #include "gd32f10x.h"
  4. //IIC1
  5. //#define IIC_WP_PORT GPIOE
  6. //#define IIC_WP_PIN GPIO_PIN_14
  7. #ifdef TY_0904
  8. #define IIC_WP_PORT GPIOD
  9. #define IIC_WP_PIN GPIO_PIN_8
  10. #define IIC_SDA_PORT GPIOB
  11. #define IIC_SDA_PIN GPIO_PIN_11
  12. #define IIC_SCL_PORT GPIOB
  13. #define IIC_SCL_PIN GPIO_PIN_10
  14. //https://blog.csdn.net/fireboyorhotboy/article/details/92645607
  15. //#define SDA_IN() {gpio_init(IIC_SDA_PORT,GPIO_MODE_IPD,GPIO_OSPEED_50MHZ,IIC_SDA_PIN);}
  16. //#define SDA_OUT() {gpio_init(IIC_SDA_PORT,GPIO_MODE_OUT_OD,GPIO_OSPEED_50MHZ,IIC_SDA_PIN);}
  17. #define SDA_IN() {GPIO_CTL1(GPIOB) &= 0xFFFF0FFF;GPIO_CTL1(GPIOB) |= ((uint32_t)8<<(4*3));} //PB11 输入模式
  18. #define SDA_OUT() {GPIO_CTL1(GPIOB) &= 0xFFFF0FFF;GPIO_CTL1(GPIOB) |= ((uint32_t)7<<(4*3));} //PB11 输出模式,开漏输出
  19. #define IIC_SCL(n) (n?gpio_bit_set(IIC_SCL_PORT, IIC_SCL_PIN):gpio_bit_reset(IIC_SCL_PORT, IIC_SCL_PIN))
  20. #define IIC_SDA(n) (n?gpio_bit_set(IIC_SDA_PORT, IIC_SDA_PIN):gpio_bit_reset(IIC_SDA_PORT, IIC_SDA_PIN))
  21. #define READ_SDA gpio_input_bit_get(IIC_SDA_PORT, IIC_SDA_PIN) //输入SDA
  22. #else
  23. #define IIC_WP_PORT GPIOB
  24. #define IIC_WP_PIN GPIO_PIN_5
  25. #define IIC_SDA_PORT GPIOB
  26. #define IIC_SDA_PIN GPIO_PIN_7
  27. #define IIC_SCL_PORT GPIOB
  28. #define IIC_SCL_PIN GPIO_PIN_6
  29. //https://blog.csdn.net/fireboyorhotboy/article/details/92645607
  30. //#define SDA_IN() {gpio_init(IIC_SDA_PORT,GPIO_MODE_IPD,GPIO_OSPEED_50MHZ,IIC_SDA_PIN);}
  31. //#define SDA_OUT() {gpio_init(IIC_SDA_PORT,GPIO_MODE_OUT_OD,GPIO_OSPEED_50MHZ,IIC_SDA_PIN);}
  32. #define SDA_IN() {GPIO_CTL0(GPIOB) &= 0x0FFFFFFF;GPIO_CTL0(GPIOB) |= ((uint32_t)8<<(4*7));} //PB11 输入模式
  33. #define SDA_OUT() {GPIO_CTL0(GPIOB) &= 0x0FFFFFFF;GPIO_CTL0(GPIOB) |= ((uint32_t)7<<(4*7));} //PB11 输出模式,开漏输出
  34. #define IIC_SCL(n) (n?gpio_bit_set(IIC_SCL_PORT, IIC_SCL_PIN):gpio_bit_reset(IIC_SCL_PORT, IIC_SCL_PIN))
  35. #define IIC_SDA(n) (n?gpio_bit_set(IIC_SDA_PORT, IIC_SDA_PIN):gpio_bit_reset(IIC_SDA_PORT, IIC_SDA_PIN))
  36. //#define IIC_SCL_HIGH gpio_bit_set(IIC_SCL_PORT, IIC_SCL_PIN)
  37. //#define IIC_SCL_LOW gpio_bit_reset(IIC_SCL_PORT, IIC_SCL_PIN)
  38. //#define IIC_SDA_HIGH gpio_bit_set(IIC_SDA_PORT, IIC_SDA_PIN)
  39. //#define IIC_SDA_LOW gpio_bit_reset(IIC_SDA_PORT, IIC_SDA_PIN)
  40. #define READ_SDA gpio_input_bit_get(IIC_SDA_PORT, IIC_SDA_PIN) //输入SDA
  41. #endif
  42. //IIC1
  43. //#define IIC_WP_PORT GPIOB
  44. //#define IIC_WP_PIN GPIO_Pin_5
  45. //#define IIC_SDA_PORT GPIOB
  46. //#define IIC_SDA_PIN GPIO_Pin_7
  47. //#define IIC_SCL_PORT GPIOB
  48. //#define IIC_SCL_PIN GPIO_Pin_6
  49. //#define SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;} //PB7输入模式,(7-0)*4=28
  50. ////#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;} //PB7输出模式,(7-0)*4=28 //推挽输出
  51. //#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)7<<28;} //PB7输出模式,(7-0)*4=28 //开漏输出
  52. //#define IIC_SCL PBout(6) //SCL
  53. //#define IIC_SDA PBout(7) //SDA
  54. //#define READ_SDA PBin(7) //输入SDA
  55. ////////////////////////////////////////////////////////////////////////////////////////////
  56. #define HIGH 1
  57. #define LOW 0
  58. #define PinInput 1
  59. #define PinOutput 0
  60. //写保护,低电平关闭,可以写入;高电平打开,不能写入
  61. #define IIC_WRITE_PROTECT_ENABLE() {gpio_bit_set(IIC_WP_PORT, IIC_WP_PIN);}
  62. #define IIC_WRITE_PROTECT_DISABLE() {gpio_bit_reset(IIC_WP_PORT, IIC_WP_PIN);}
  63. #define E_DELAY 2 // 两个EEPROM命令之间的间隔
  64. extern u8 iic_cmd_delay;
  65. void I2C_init(void);
  66. extern u8 AT24CXX_ReadOneByte(u32 ReadAddr);
  67. extern void AT24CXX_WriteOneByte(u32 WriteAddr,u8 DataToWrite);
  68. extern void AT24CXX_Read(u32 ReadAddr,u8 *pBuffer,u16 NumToRead);
  69. extern void AT24CXX_Write(u32 WriteAddr,u8 *pBuffer,u16 NumToWrite);
  70. extern void AT24CXX_clr(u32 WriteAddr,u32 NumToWrite);
  71. extern void IIC_Start1(void);
  72. void IIC_Stop(void);
  73. u8 IIC_Wait_Ack(void);
  74. void IIC_Ack(void);
  75. void IIC_NAck(void);
  76. void IIC_Send_Byte(u8 txd);
  77. uint8_t I2C_Test(void);
  78. void delay_nop(void);
  79. #define EEPROM_INFO(fmt,arg...) printf("<<-EEPROM-INFO->> "fmt"\n",##arg)//OTP_TRACE(fmt,##arg)//trace_otp_trace1(uart_msg_send, 4, fmt, ##arg);
  80. #define EEPROM_ERROR(fmt,arg...) //printf("<<-EEPROM-ERROR->> "fmt"\n",##arg)
  81. #define EEPROM_DEBUG(fmt,arg...) /*do{\
  82. if(EEPROM_DEBUG_ON)\
  83. printf("<<-EEPROM-DEBUG->> [%d]"fmt"\n",__LINE__, ##arg);\
  84. }while(0)*/
  85. #endif