You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.7 KiB

11 months ago
11 months ago
11 months ago
11 months ago
  1. #include "apphardware.hpp"
  2. using namespace iflytop;
  3. #define TAG "AppHardware"
  4. void AppHardware::initialize() {
  5. AppHal::UART3_Init();
  6. AppHal::UART4_Init();
  7. AppHal::MX_I2C1_Init();
  8. AppHal::MX_HSPI1_Init();
  9. tjcUart = &huart4;
  10. remoteContolerUart = &huart3;
  11. MOTO_POWER_EN.initAsOutput(MOTO_POWER_EN_IO, kxs_gpio_nopull, false, true);
  12. MOTO1_CSN.initAsOutput(MOTO1_CSN_IO, kxs_gpio_nopull, false, true);
  13. MOTO2_CSN.initAsOutput(MOTO2_CSN_IO, kxs_gpio_nopull, false, true);
  14. MOTO3_CSN.initAsOutput(MOTO3_CSN_IO, kxs_gpio_nopull, false, true);
  15. MOTO4_CSN.initAsOutput(MOTO4_CSN_IO, kxs_gpio_nopull, false, true);
  16. MOTO1_DRV_ENN.initAsOutput(MOTO1_DRV_ENN_IO, kxs_gpio_nopull, false, true);
  17. MOTO2_DRV_ENN.initAsOutput(MOTO2_DRV_ENN_IO, kxs_gpio_nopull, false, true);
  18. MOTO3_DRV_ENN.initAsOutput(MOTO3_DRV_ENN_IO, kxs_gpio_nopull, false, true);
  19. MOTO4_DRV_ENN.initAsOutput(MOTO4_DRV_ENN_IO, kxs_gpio_nopull, false, true);
  20. ID1.initAsInput(ID1_IO, kxs_gpio_nopull, kxs_gpio_no_irq, false);
  21. ID2.initAsInput(ID2_IO, kxs_gpio_nopull, kxs_gpio_no_irq, false);
  22. ID3.initAsInput(ID3_IO, kxs_gpio_nopull, kxs_gpio_no_irq, false);
  23. ID4.initAsInput(ID4_IO, kxs_gpio_nopull, kxs_gpio_no_irq, false);
  24. ID5.initAsInput(ID5_IO, kxs_gpio_nopull, kxs_gpio_no_irq, false);
  25. IO_OUT1.initAsOutput(IO_OUT1_IO, kxs_gpio_nopull, true, false);
  26. IO_OUT2.initAsOutput(IO_OUT2_IO, kxs_gpio_nopull, true, false);
  27. BLE_CONNECTED_STATE_IO_PE6.initAsInput(PE6, kxs_gpio_nopull, kxs_gpio_no_irq, false);
  28. osDelay(10);
  29. MOTO_POWER_EN.setState(false);
  30. TMC51X0Cfg tmc5130cfg1 = {&MOTOR_SPI_INS, MOTO1_CSN_IO, MOTO1_DRV_ENN_IO};
  31. TMC51X0Cfg tmc5130cfg2 = {&MOTOR_SPI_INS, MOTO2_CSN_IO, MOTO2_DRV_ENN_IO};
  32. TMC51X0Cfg tmc5130cfg3 = {&MOTOR_SPI_INS, MOTO3_CSN_IO, MOTO3_DRV_ENN_IO};
  33. TMC51X0Cfg tmc5130cfg4 = {&MOTOR_SPI_INS, MOTO4_CSN_IO, MOTO4_DRV_ENN_IO};
  34. MOTO1.initialize(0,tmc5130cfg1);
  35. MOTO2.initialize(1,tmc5130cfg2);
  36. MOTO3.initialize(2,tmc5130cfg3);
  37. MOTO4.initialize(3,tmc5130cfg4);
  38. ZLOGI(TAG, "motor1 initialize TMC51X0:%x", MOTO1.readICVersion());
  39. ZLOGI(TAG, "motor2 initialize TMC51X0:%x", MOTO2.readICVersion());
  40. ZLOGI(TAG, "motor3 initialize TMC51X0:%x", MOTO3.readICVersion());
  41. ZLOGI(TAG, "motor4 initialize TMC51X0:%x", MOTO4.readICVersion());
  42. MOTO1.setIHOLD_IRUN(10, 31, 100);
  43. MOTO2.setIHOLD_IRUN(10, 31, 100);
  44. MOTO3.setIHOLD_IRUN(10, 31, 100);
  45. MOTO4.setIHOLD_IRUN(10, 31, 100);
  46. MOTO1.setScale(1000);
  47. MOTO2.setScale(1000);
  48. MOTO3.setScale(1000);
  49. MOTO4.setScale(1000);
  50. MOTO1.enable(1);
  51. MOTO2.enable(1);
  52. MOTO3.enable(1);
  53. MOTO4.enable(1);
  54. // MOTO1.rotate(1000);
  55. // MOTO2.rotate(1000);
  56. // MOTO3.rotate(1000);
  57. // MOTO4.rotate(1000);
  58. IO_OUT1.setState(false);
  59. IO_OUT2.setState(false);
  60. // ZCAN1::ins()->init();
  61. }