TEA5767_i2c.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "TEA5767_main.h"
  2. #include "Delay.h"
  3. void iic_start ( void )
  4. {
  5. TEA5767_SDA = 1;
  6. delay_us ( 4 );
  7. TEA5767_SCL = 1;
  8. delay_us ( 4 );
  9. TEA5767_SDA = 0;
  10. delay_us ( 4 );
  11. TEA5767_SCL = 0;
  12. delay_us ( 4 );
  13. }
  14. void iic_stop ( void )
  15. {
  16. TEA5767_SCL = 0;
  17. delay_us ( 4 );
  18. TEA5767_SDA = 0;
  19. delay_us ( 4 );
  20. TEA5767_SCL = 1;
  21. delay_us ( 4 );
  22. TEA5767_SDA = 1;
  23. delay_us ( 4 );
  24. }
  25. void iic_ack ( void )
  26. {
  27. TEA5767_SDA = 0;
  28. delay_us ( 4 );
  29. TEA5767_SCL = 1;
  30. delay_us ( 4 );
  31. TEA5767_SCL = 0;
  32. delay_us ( 4 );
  33. TEA5767_SDA = 1;
  34. delay_us ( 4 );
  35. }
  36. /*void iic_NoAck()
  37. {
  38. TEA5767_SDA=1;
  39. delay_us(4);
  40. TEA5767_SCL=1;
  41. delay_us(4);
  42. TEA5767_SCL=0;
  43. delay_us(4);
  44. TEA5767_SDA=0;
  45. }*/
  46. bool iic_testack ( void )
  47. {
  48. bool ErrorBit;
  49. TEA5767_SDA = 1;
  50. delay_us ( 4 );
  51. TEA5767_SCL = 1;
  52. delay_us ( 4 );
  53. ErrorBit = TEA5767_SDA_VALUE;
  54. delay_us ( 4 );
  55. TEA5767_SCL = 0;
  56. return ErrorBit;
  57. }
  58. void iic_write8bit ( unsigned char input )
  59. {
  60. unsigned char temp;
  61. for ( temp = 8; temp != 0; temp-- )
  62. {
  63. TEA5767_SDA = ( bool ) ( input & 0x80 );
  64. delay_us ( 4 );
  65. TEA5767_SCL = 1;
  66. delay_us ( 4 );
  67. TEA5767_SCL = 0;
  68. delay_us ( 4 );
  69. input = input << 1;
  70. }
  71. }
  72. unsigned char iic_read8bit ( void )
  73. {
  74. unsigned char temp, rbyte = 0;
  75. for ( temp = 8; temp != 0; temp-- )
  76. {
  77. TEA5767_SCL = 1;
  78. delay_us ( 4 );
  79. rbyte = rbyte << 1;
  80. rbyte = rbyte | ( ( unsigned char ) TEA5767_SDA_VALUE );
  81. TEA5767_SCL = 0;
  82. }
  83. return rbyte;
  84. }