hal_gpio_i2c_interface.c 947 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "driver.h"
  2. #include <linux/types.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include "com_gpio.h"
  6. #include "hal_interface_api.h"
  7. #include "linux/fcntl.h"
  8. /*
  9. bus: 1,2,3
  10. address: 8bit
  11. */
  12. int stm32_gpio_i2c_master_write(int fd, uint8_t address, uint8_t *pBuf, uint16_t size)
  13. {
  14. int ret = 0;
  15. gpio_i2c_t i2c_arg;
  16. i2c_arg.DevAddress = address;
  17. i2c_arg.Size = size;
  18. memcpy(i2c_arg.buf, pBuf, size);
  19. ret = ioctl(fd, GPIO_I2C_MASTER_TRANSFER, &i2c_arg);
  20. if(ret != 0)
  21. {
  22. printf("Write i2c failed! ADDR: %#x\n", address);
  23. }
  24. return ret;
  25. }
  26. int stm32_gpio_i2c_master_read(int fd, uint8_t address, uint8_t *pBuf, uint16_t size)
  27. {
  28. int ret;
  29. gpio_i2c_t i2c_arg;
  30. i2c_arg.DevAddress = address;
  31. i2c_arg.Size = size;
  32. ret = ioctl(fd, GPIO_I2C_MASTER_RECEIVE, &i2c_arg);
  33. if(ret != 0)
  34. {
  35. printf("Read i2c failed! ADDR: %#x\n", address);
  36. }
  37. memcpy(pBuf, i2c_arg.buf, size);
  38. return 0;
  39. }