twi2c.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /* Copyright 2018 Jack Humbert
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #include "ch.h"
  17. #include "hal.h"
  18. #ifndef I2C_DRIVER
  19. #define I2C_DRIVER I2CD1
  20. #endif
  21. #define slaveI2Caddress 0x30 /* Address in our terms - halved by later code */
  22. //#define myOtherI2Caddress 0x19
  23. #ifdef I2C_SLAVE_ENABLE
  24. typedef void twi2c_message_received(uint8_t * body, uint16_t size);
  25. twi2c_message_received twi2c_message_received_callback;
  26. I2CSlaveMsgCB twi2c_slave_message_process, catchError, clearAfterSend;
  27. void twi2c_slave_init(void);
  28. #endif
  29. void twi2c_init(void);
  30. uint8_t twi2c_start(uint8_t address);
  31. uint8_t twi2c_write(uint8_t data);
  32. uint8_t twi2c_read_ack(void);
  33. uint8_t twi2c_read_nack(void);
  34. uint8_t twi2c_transmit(uint8_t address, uint8_t* data, uint16_t length);
  35. uint8_t twi2c_receive(uint8_t address, uint8_t* data, uint16_t length);
  36. uint8_t twi2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length);
  37. uint8_t twi2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length);
  38. void twi2c_stop(void);
  39. uint8_t twi2c_reply(uint8_t * data, uint16_t length);
  40. uint8_t twi2c_transmit_receive(uint8_t address, uint8_t * tx_body, uint16_t tx_length, uint8_t rx_body, uint16_t rx_length);
  41. uint8_t twi2c_start_listening(uint8_t address, twi2c_message_received callback);