Quellcode durchsuchen

spi on nbus (check app_imu.cpp - mcu_spi_init)

Juraj Ďuďák vor 1 Jahr
Ursprung
Commit
ed491d304a
7 geänderte Dateien mit 34 neuen und 16 gelöschten Zeilen
  1. 1 1
      Core/Inc/app_interface.h
  2. 6 4
      Core/Src/app_imu.cpp
  3. 8 2
      Core/Src/main.c
  4. 1 1
      Modules/icm20948
  5. 1 1
      Modules/nbus
  6. 16 6
      test/app.py
  7. 1 1
      test/comm.py

+ 1 - 1
Core/Inc/app_interface.h

@@ -17,6 +17,6 @@ void uart_abort_receive();
 void timer_uart_start(int n);
 void timer_uart_stop();
 void uart_send(uint8_t *data, int n);
-
+void app_delay(uint8_t);
 
 #endif /* INC_APP_INTERFACE_H_ */

+ 6 - 4
Core/Src/app_imu.cpp

@@ -30,16 +30,18 @@ nBusAppInterface_t mcu_spi_driver = {
 axisesI *sensor_dataI;  // int16 values
 
 Icm20948 *sensor;
-
+IcmSpiManager *manager;
 
 nBusAppInterface_t *getImuDriver(){
 	return &mcu_spi_driver;
 }
 
 void mcu_spi_init(void *hw_interface, void *hw_config){
-	IcmSpiManager manager((SPI_HandleTypeDef*)hw_interface);		// TODO toto ma byt o uroven vyssie, ale je to c subor
-	Icm20948 sens(&manager, (icm20948_Config*)hw_config);
-	sensor = &sens;
+	manager = new IcmSpiManager((SPI_HandleTypeDef*)hw_interface);		// TODO toto ma byt o uroven vyssie, ale je to c subor
+	//Icm20948 sens(&manager, (icm20948_Config*)hw_config);	// TODO: skontolovať: referenciana lokálnu premennú
+	//sensor = &sens;
+	sensor = new Icm20948();
+	sensor->setDevice(manager, (icm20948_Config*)hw_config);
 }
 
 void mcu_spi_reset(){

+ 8 - 2
Core/Src/main.c

@@ -22,6 +22,7 @@
 /* Private includes ----------------------------------------------------------*/
 /* USER CODE BEGIN Includes */
 #include "nbus_app.h"
+#include "memory_ec20.h"
 
 #if MODULE == MODULE_FSR
 #include "app_adc.h"
@@ -125,6 +126,10 @@ inline void timer_uart_stop(){
 	HAL_TIM_Base_Stop_IT(&htim22);
 }
 
+inline void app_delay(uint8_t ms){
+	HAL_Delay(ms);
+}
+
 static inline void nbus_app_UART_RX(UART_HandleTypeDef *huart){
 	nbus_cb_UART_RX();
 }
@@ -190,7 +195,8 @@ int main(void)
 		  led_off,
 		  led_toggle,
 		  timer_uart_start,
-		  timer_uart_stop
+		  timer_uart_stop,
+		  app_delay
   };
 
 #if MODULE_MASTER == 1
@@ -439,7 +445,7 @@ static void MX_SPI1_Init(void)
   hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
   hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
   hspi1.Init.NSS = SPI_NSS_SOFT;
-  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
+  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
   hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
   hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
   hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;

+ 1 - 1
Modules/icm20948

@@ -1 +1 @@
-Subproject commit d2529b5c0121e22b2de029b4c05c22e6a6e765d4
+Subproject commit ca4750a178a3296b8cc0874193636f9b613694b6

+ 1 - 1
Modules/nbus

@@ -1 +1 @@
-Subproject commit 851a5ffdd60b4b8621f389542fa82fa91de36957
+Subproject commit 65453b8de16f3ac6e4f73be6d500373a5918842a

+ 16 - 6
test/app.py

@@ -1,5 +1,6 @@
 from comm import *
-
+import sys
+import time
 
 class AppTest:
     def __init__(self, adr_module, adr_sensor):
@@ -23,13 +24,15 @@ class AppTest:
         print("Echo:"+echo)
 
     def cmd_set_param(self, param):        
-        resp = self.serial_port.request(self.module, self.sensor, (SET+CMD_PARAM),[])     
+        resp = self.serial_port.request(self.module, self.srensor, (SET+CMD_PARAM),[])     
 
     def cmd_get_param(self, param):        
         resp = self.serial_port.request(self.module, self.sensor, (CMD_PARAM),[])     
 
     def cmd_sensor_cnt(self):
+        print("SENSOR CNT")
         resp = self.serial_port.request(self.module, 0, CMD_SENSOR_CNT,[])        
+        print(resp)
         return resp[3]
 
     def cmd_sensor_type(self, index):
@@ -85,9 +88,11 @@ class AppTest:
         return data
 
     def cmd_module_start(self):
+        print("MODULE START")
         self.serial_port.requestBroadcast(CMD_START,[])
 
     def cmd_module_stop(self):
+        print("MODULE STOP")
         self.serial_port.requestBroadcast(CMD_STOP,[])
 
 if __name__ == "__main__":
@@ -95,16 +100,21 @@ if __name__ == "__main__":
     app = AppTest(0x05, 0x0)
     #app.cmd_version()
     #app.cmd_version()
+    # app.cmd_module_stop()
     app.cmd_echo([65,66,67,68,69,70])
-    app.cmd_echo([10,11,12])
-    
-    
+    app.cmd_echo([97,98,99,100])
+    sys.exit()
+    app.cmd_module_stop()
     app.cmd_module_start()
-
+    #time.sleep(0.5)
+    #app.cmd_module_stop()
+    sys.exit()
     pocet = app.cmd_sensor_cnt()
+    
     print("pocet senzorov=", pocet)
     app.cmd_sensor_get_data_all(pocet)
 
+    sys.exit()
     
     for i in range(pocet):
         d=app.cmd_sensor_get_data(i+1)

+ 1 - 1
test/comm.py

@@ -111,7 +111,7 @@ class SerialComm:
         return start
 
     def wait_to_response(self, extra_delay):
-        communication_delay = 0.001
+        communication_delay = 0.0001
         t0 = time.time()  # timeout for response
         response_length = self.port.inWaiting()
         timeout = 0.05