From 505b448eeb3c6b71dbf156af0d2306371cb5aec6 Mon Sep 17 00:00:00 2001 From: aprochazka Date: Tue, 4 Apr 2023 21:13:32 +0200 Subject: [PATCH] Camera progress --- Firmware/CMakeLists.txt | 1 + Firmware/Core/Cam/Cam.c | 4 +- Firmware/Core/Src/main.c | 87 +++++++++++++++++++++++++-------------- HW/fp-info-cache | 1 + Receiver/Displayer.o | Bin 0 -> 37912 bytes Receiver/ImageView.o | Bin 0 -> 10504 bytes Receiver/Receiver.cpp | 2 +- Receiver/Receiver.o | Bin 0 -> 105072 bytes Receiver/Transfer.o | Bin 0 -> 9712 bytes Receiver/main | Bin 0 -> 74888 bytes Receiver/main.cpp | 28 +++++++++---- Receiver/main.o | Bin 0 -> 45616 bytes 12 files changed, 80 insertions(+), 43 deletions(-) create mode 100644 HW/fp-info-cache create mode 100644 Receiver/Displayer.o create mode 100644 Receiver/ImageView.o create mode 100644 Receiver/Receiver.o create mode 100644 Receiver/Transfer.o create mode 100755 Receiver/main create mode 100644 Receiver/main.o diff --git a/Firmware/CMakeLists.txt b/Firmware/CMakeLists.txt index ab23837..6531502 100644 --- a/Firmware/CMakeLists.txt +++ b/Firmware/CMakeLists.txt @@ -135,6 +135,7 @@ target_link_options(${EXECUTABLE} PRIVATE -Wl,--start-group -lc -lm + -lnosys -lstdc++ -Wl,--end-group -Wl,--print-memory-usage) diff --git a/Firmware/Core/Cam/Cam.c b/Firmware/Core/Cam/Cam.c index 15db321..ba9c9b9 100644 --- a/Firmware/Core/Cam/Cam.c +++ b/Firmware/Core/Cam/Cam.c @@ -207,11 +207,11 @@ void Cam_Start_Burst_Read(SPI_HandleTypeDef *hspi) void Cam_Capture(SPI_HandleTypeDef *hspi) { - LED_On(); + //LED_On(); Cam_Start_Capture(hspi); Cam_Wait_Capture_Done(hspi); - LED_Off(); + //LED_Off(); } \ No newline at end of file diff --git a/Firmware/Core/Src/main.c b/Firmware/Core/Src/main.c index 3b6a80c..67a2497 100644 --- a/Firmware/Core/Src/main.c +++ b/Firmware/Core/Src/main.c @@ -68,6 +68,7 @@ static void MX_USB_PCD_Init(void); /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ +/* static unsigned frame_num = 0; static unsigned tx_busy = 0; static unsigned interval_ms = 1000 / FRAME_RATE; @@ -86,7 +87,7 @@ static struct { {color_bar_7_jpg_len, color_bar_7_jpg}, }; - +*/ /* void cdc_task(void) { @@ -159,6 +160,7 @@ uint8_t sendT[600] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +/* int currentIdx = 0; int currentImg = 0; @@ -203,7 +205,7 @@ int send_CDC_Bulk(){ currentIdx = currentIdx + 10; return 1; } - +*/ /* USER CODE END 0 */ @@ -247,14 +249,35 @@ int main(void) tud_init(BOARD_DEVICE_RHPORT_NUM); - //HAL_Delay(10); - //SPI_Init(&hspi1); + HAL_Delay(10); + SPI_Init(&hspi1); // Wait for power stabilization //HAL_Delay(1000); - //Cam_Init(&hi2c1, &hspi1); + Cam_Init(&hi2c1, &hspi1); + + int currentSendingIndex = 0; + + + Cam_Capture(&hspi1); + + uint16_t image_size = Cam_FIFO_length(&hspi1); + //uint8_t *image_data = malloc((image_size + (image_size%10)) * sizeof(uint8_t)); + uint8_t image_data[10000]; + memset(image_data, 0x00, image_size + (image_size%10)); + + Cam_Start_Burst_Read(&hspi1); + + HAL_SPI_Receive_DMA(&hspi1, image_data, image_size); + + while (SPI_Rx_Done_Flag == 0) + { + // Wait for SPI transfer to finish + } + CS_Off(); + SPI_Rx_Done_Flag = 0; /* USER CODE END 2 */ @@ -262,42 +285,44 @@ int main(void) /* USER CODE BEGIN WHILE */ while (1) { + tud_task(); - //tud_cdc_write("1\r", 3); - //tud_cdc_write_flush(); - //video_task(); - //HAL_Delay(10); - send_CDC_Bulk(); - HAL_Delay(5); + if(currentSendingIndex >= 590){ + currentSendingIndex = 0; + //free(image_data); + Cam_Capture(&hspi1); - /* - Cam_Capture(&hspi1); + image_size = Cam_FIFO_length(&hspi1); - uint16_t image_size = Cam_FIFO_length(&hspi1); + //image_data = malloc((image_size + (image_size%10)) * sizeof(uint8_t)); + //memset(image_data, 0x00, image_size + (image_size%10)); - uint8_t *image_data = malloc(image_size * sizeof(uint8_t)); - memset(image_data, 0x00, image_size); + Cam_Start_Burst_Read(&hspi1); - Cam_Start_Burst_Read(&hspi1); + HAL_SPI_Receive_DMA(&hspi1, &(image_data[0]), image_size); + Debug_LED_On(); - HAL_SPI_Receive_DMA(&hspi1, image_data, image_size); - Debug_LED_On(); - - while (SPI_Rx_Done_Flag == 0) - { - // Wait for SPI transfer to finish + while (SPI_Rx_Done_Flag == 0) + { + // Wait for SPI transfer to finish + } + CS_Off(); + SPI_Rx_Done_Flag = 0; + if(image_size < 1){ + currentSendingIndex = 10000; + } + + } + else { + LED_On(); + tud_cdc_write(&sendT[currentSendingIndex], 10); + tud_cdc_write_flush(); + currentSendingIndex = currentSendingIndex + 10; + HAL_Delay(5); } - Debug_LED_Off(); - CS_Off(); - - SPI_Rx_Done_Flag = 0; - HAL_UART_Transmit(&huart2, image_data, image_size, HAL_MAX_DELAY); - Debug_LED_Off(); - free(image_data); - */ /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ diff --git a/HW/fp-info-cache b/HW/fp-info-cache new file mode 100644 index 0000000..573541a --- /dev/null +++ b/HW/fp-info-cache @@ -0,0 +1 @@ +0 diff --git a/Receiver/Displayer.o b/Receiver/Displayer.o new file mode 100644 index 0000000000000000000000000000000000000000..1a562509d4c9599f1e953480d0d88451ba1a4b8e GIT binary patch literal 37912 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 literal 0 HcmV?d00001 diff --git a/Receiver/Receiver.cpp b/Receiver/Receiver.cpp index ed8b69a..dad7a1c 100644 --- a/Receiver/Receiver.cpp +++ b/Receiver/Receiver.cpp @@ -11,7 +11,7 @@ void Receiver::printHex(unsigned char value) { void Receiver::openStream(){ while(1){ // Open the CDC device file for reading - cdcFile = open("/dev/ttyACM2", O_RDWR | O_NOCTTY); + cdcFile = open("/dev/ttyACM1", O_RDWR | O_NOCTTY); if (cdcFile == -1) { std::cerr << "Failed to open CDC device file" << std::endl; std::this_thread::sleep_for(std::chrono::milliseconds(500)); diff --git a/Receiver/Receiver.o b/Receiver/Receiver.o new file mode 100644 index 0000000000000000000000000000000000000000..a7af35aebaba32a7e279a0d921efff9c2bdea388 GIT binary patch literal 105072 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 literal 0 HcmV?d00001 diff --git a/Receiver/Transfer.o b/Receiver/Transfer.o new file mode 100644 index 0000000000000000000000000000000000000000..7c642ec553bcc7dbff658eb1f9d442efc8fa56da GIT binary patch literal 9712 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 literal 0 HcmV?d00001 diff --git a/Receiver/main.cpp b/Receiver/main.cpp index 494d30b..4379262 100644 --- a/Receiver/main.cpp +++ b/Receiver/main.cpp @@ -9,13 +9,22 @@ int cdcFile; struct termios tty; -void readLoop(){ - openStream(&cdcFile); - initSerial(&tty, &cdcFile); + +void readLoop(Receiver ** receiverPtr){ + (*receiverPtr)->openStream(); + (*receiverPtr)->initSerial(); while (true) { - readCdcData(&cdcFile); - std::this_thread::sleep_for(std::chrono::milliseconds(5)); + unsigned char character[10]; + (*receiverPtr)->readCdcData(&character); + if((*receiverPtr)->findStart(&character) != -1) + {std::cout << "start" << std::endl;} + else if((*receiverPtr)->findEnd(&character) != -1) + {std::cout << "stop" << std::endl;} + else{ + std::cout << "-"; + } + std::this_thread::sleep_for(std::chrono::milliseconds(20)); } close(cdcFile); @@ -36,12 +45,13 @@ void receiverLoop(Receiver ** receiverPtr){ int main() { - Displayer dis; + Receiver *rec = new Receiver(&dis); + + /* dis.createWindow(); dis.renderWindow(); - Receiver *rec = new Receiver(&dis); rec->openStream(); rec->initSerial(); rec->fillBuffer(); @@ -52,8 +62,8 @@ int main() dis.windowLoop(); t1.join(); + */ - - //readLoop(); + readLoop(&rec); return 0; } diff --git a/Receiver/main.o b/Receiver/main.o new file mode 100644 index 0000000000000000000000000000000000000000..8fb3a53e32afff03d6ac8e7d71b9c1150f4e2fa0 GIT binary patch literal 45616 zcmeHw4SZD9nfFZw1gRQOQ7XEo@e9AwOdtr#s|heVk${l^r2^gz$>akknK+q1KvXoK z3^5h0wN$ai&!WZp2}MN-$^x}jX z`@O&4o*#G4x&QNgo##B~kk6#@Hz=P?`8OfIfy#3rpG)O=kl#pUoAO%7V^p3`c^&2T zkjJUq0C^*on;>td@&d|lf;>Ux7RXzvoP@lM$~QxvqH;UrX)1R>zL3g`An&B|V#t?J z`4-5RQu$WO(UrGTc^Tw)Q29>EyC7dqHsudM{v9emNcnduUjzB~sQeJ*4^w$9rK0q2bZ zFq(-R3HL_3BfFyAaI^COV3y&wXXd{|GavYgylB^vzJl-cF7HiW8toYHb1UY}6W*x!M#U^;@VI;!?XPe6YhPbx<9hhy#_tOE zc8RLIf)($8p?AEF6n%Y`Rj>jLcREgLb8g>sN;{(66jh33MK6em_K1*r=-)QEeXl9#Zkzfq(k%v*kKnLUm-j#>$G2*i<`R?-7is9-#ZP^q}F!j|Fk z2KM+?4AcW}fUoD_MCD2C=~yalwWpJ9)}^wdF4o$bOc⩔<0qRusvOW`Q;1ab?IcP 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 literal 0 HcmV?d00001