IICSetup.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #ifndef __IICSETUP_H__
  2. #define __IICSETUP_H__
  3. /*--------------------------------------------------------------------------------------
  4. * @file IICSetup.h
  5. * @author ZhangJing
  6. * @version base on stm32f0x
  7. * @date 2015.09.11
  8. * @brief 模拟IIC驱动
  9. ---------------------------------------------------------------------------------------*/
  10. #include "stdint.h"
  11. #define TWI_SCL_0 GPIOA->BRR=GPIO_Pin_5//SCL低 PINA05
  12. #define TWI_SCL_1 GPIOA->BSRR=GPIO_Pin_5//SCL高 PINA05
  13. #define TWI_SDA_0 GPIOA->BRR=GPIO_Pin_4//SDA低 PINA04
  14. #define TWI_SDA_1 GPIOA->BSRR=GPIO_Pin_4//SDA高 PINA04
  15. #define TWI_SDA_STATE (GPIOA->IDR&GPIO_Pin_4)//SDA状态
  16. #define RTC_SCL_0 GPIOE->BRR=GPIO_Pin_2//SCL低 PINE02
  17. #define RTC_SCL_1 GPIOE->BSRR=GPIO_Pin_2//SCL高 PINE02
  18. #define RTC_SDA_0 GPIOE->BRR=GPIO_Pin_3//SDA低 PINE03
  19. #define RTC_SDA_1 GPIOE->BSRR=GPIO_Pin_3//SDA高 PINE03
  20. #define RTC_SDA_STATE (GPIOE->IDR&GPIO_Pin_3)//SDA状态
  21. #define TWI_RETRY_COUNT 3 //重试次数
  22. #define TWI_NOP TWI_Delay()
  23. #define RTC_NOP RTC_Delay()
  24. enum ENUM_TWI_REPLY //应答状态
  25. {
  26. TWI_NACK=0,
  27. TWI_ACK=1,
  28. };
  29. enum ENUM_RTC_REPLY//应答状态
  30. {
  31. RTC_NACK=0,
  32. RTC_ACK=1,
  33. };
  34. enum ENUM_TWI_BUS_STATE//总线工作状态
  35. {
  36. TWI_READY=0,
  37. TWI_BUS_BUSY=1,
  38. TWI_BUS_ERROR=2,
  39. };
  40. enum ENUM_RTC_BUS_STATE//总线工作状态
  41. {
  42. RTC_READY=0,
  43. RTC_BUS_BUSY=1,
  44. RTC_BUS_ERROR=2,
  45. };
  46. void TWI_Delay(void);
  47. void RTC_Delay(void);
  48. void IICInit( void );
  49. uint8_t TWI_START(void);
  50. void TWI_STOP(void);
  51. void TWI_SendACK(void);
  52. void TWI_SendNACK(void);
  53. uint8_t TWI_WaitAck(void);
  54. uint8_t TWI_SendByte(uint8_t Data);
  55. uint8_t TWI_ReceiveByte(void);
  56. uint8_t RTC_START(void);
  57. void RTC_STOP(void);
  58. void RTC_SendACK(void);
  59. void RTC_SendNACK(void);
  60. uint8_t RTC_WaitAck(void);
  61. uint8_t RTC_SendByte(uint8_t Data);
  62. uint8_t RTC_ReceiveByte(void);
  63. #endif