potentiometer.c 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "potentiometer.h"
  2. uint32_t pot_array [2] = {0,0};
  3. void potentiometer_set(void *bar1, uint8_t pot_val_ch_a, uint8_t pot_val_ch_b) {
  4. usleep(1);
  5. uint32_t cfg_reg = get_cfg_reg();
  6. SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_MODE_BITM, CFG_REG_SPI_MODE_BITP, CFG_REG_SPI_MODE_4MOSI);
  7. uint32_t *spi_mode = bar1 + CFG_REG_ADDR;
  8. *spi_mode = cfg_reg;
  9. uint32_t pot_ch_a = (TPL0202_CMD_WR_WIPER_REG_ENUM << TPL0202_CMD_BITP)|(TPL0202_ADR_B_ENUM << TPL0202_ADR_BITP)|(pot_val_ch_a << TPL0202_DATA_BITP);
  10. uint32_t pot_ch_b = (TPL0202_CMD_WR_WIPER_REG_ENUM << TPL0202_CMD_BITP)|(TPL0202_ADR_A_ENUM << TPL0202_ADR_BITP)|(pot_val_ch_b << TPL0202_DATA_BITP);
  11. // Create a header for the Potentiometer 4MOSI
  12. uint32_t pot_header = (ENUM_SPIMODE_4MOSI | (0x2 << BITP_POT_4MOSI_HEADER) | SB_HEADER_TERM_BIT_1);
  13. uint32_t *ptr = bar1 + LMX_BASE_ADDR;
  14. *ptr = pot_header;
  15. // Send the data
  16. *ptr = pot_ch_a;
  17. *ptr = pot_ch_b;
  18. usleep(1);
  19. SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_MODE_BITM, CFG_REG_SPI_MODE_BITP, CFG_REG_SPI_MODE_1MOSI);
  20. *spi_mode = cfg_reg;
  21. set_cfg_reg(cfg_reg);
  22. usleep(1);
  23. }
  24. void potentiometer_set_qspi(uint8_t pot_offset, uint8_t pot_slope ) {
  25. uint32_t pot_ch_a = (TPL0202_CMD_WR_WIPER_REG_ENUM << TPL0202_CMD_BITP)|(TPL0202_ADR_B_ENUM << TPL0202_ADR_BITP)|(pot_offset << TPL0202_DATA_BITP);
  26. uint32_t pot_ch_b = (TPL0202_CMD_WR_WIPER_REG_ENUM << TPL0202_CMD_BITP)|(TPL0202_ADR_A_ENUM << TPL0202_ADR_BITP)|(pot_slope << TPL0202_DATA_BITP);
  27. pot_array[0] = pot_ch_a;
  28. pot_array[1] = pot_ch_b;
  29. }
  30. void potentiometer_set_offset (void *bar1, uint8_t pot_offset) {
  31. uint32_t pot_ch_a = (TPL0202_CMD_WR_WIPER_REG_ENUM << TPL0202_CMD_BITP)|(TPL0202_ADR_A_ENUM << TPL0202_ADR_BITP)|(pot_offset << TPL0202_DATA_BITP);
  32. uint32_t *data = bar1 + LMX_BASE_ADDR;
  33. //Create a header
  34. *data = ((ENUM_SPIMODE_4MOSI) |(0x1 << BITP_POT_4MOSI_HEADER)| TERM_BIT_1);
  35. *data = pot_ch_a;
  36. }
  37. void potentiometer_set_slope ( void *bar1, uint8_t pot_slope) {
  38. uint32_t pot_ch_b = (TPL0202_CMD_WR_WIPER_REG_ENUM << TPL0202_CMD_BITP)|(TPL0202_ADR_B_ENUM << TPL0202_ADR_BITP)|(pot_slope << TPL0202_DATA_BITP);
  39. uint32_t *data = bar1 + LMX_BASE_ADDR;
  40. //Create a header
  41. *data = ((ENUM_SPIMODE_4MOSI) |(0x1 << BITP_POT_4MOSI_HEADER)| TERM_BIT_1);
  42. *data = pot_ch_b;
  43. }