| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Работа с ИК-матрицей MLX90640 STM32 https://radiokot.ru/forum/viewtopic.php?f=61&t=192453 |
Страница 1 из 1 |
| Автор: | dkobrusev [ Ср фев 28, 2024 09:43:45 ] |
| Заголовок сообщения: | Работа с ИК-матрицей MLX90640 STM32 |
Начал работать с матрицей MLX90640 на STM32F407VET6 при помощи библиотеки от производителя (https://github.com/melexis/mlx90640-library/tree/master). При запуске считываются данные из EEPROM. Затем, при попытки их обработки функцией MLX90640_ExtractParameters происходит hardfault_handler. Обнаружил, с какого места появляется ошибка: Код: static int ExtractDeviatingPixels(uint16_t *eeData, paramsMLX90640 *mlx90640) { uint16_t pixCnt = 0; uint16_t brokenPixCnt = 0; uint16_t outlierPixCnt = 0; int warn = 0; int i; for(pixCnt = 0; pixCnt<5; pixCnt++) { mlx90640->brokenPixels[pixCnt] = 0xFFFF; // ТУТ mlx90640->outlierPixels[pixCnt] = 0xFFFF; } pixCnt = 0; ... } Заметил, что если добавить рядом в цикл mlx90640->brokenPixels[0] = 0xFFFF;, то ошибка больше не выдается, но после этого I2C имеет флаг BUSY и дальнейшая работа с камерой невозможна |
|
| Автор: | dkobrusev [ Чт фев 29, 2024 09:20:44 ] |
| Заголовок сообщения: | Re: Работа с ИК-матрицей MLX90640 STM32 |
Возможно проблема в I2C драйвере для библиотеки в преобразовании указателей, но я не уверен. Код: int MLX90640_I2CRead(uint8_t slaveAddr, uint16_t startAddress, uint16_t nMemAddressRead, uint16_t *data)
{ uint8_t* p = (uint8_t*) data; // <-- int ack = 0; int cnt = 0; ack = HAL_I2C_Mem_Read(&hi2c1, (slaveAddr<<1), startAddress, I2C_MEMADD_SIZE_16BIT, p, nMemAddressRead*2, 500); if (ack != HAL_OK) { return -1; } for(cnt=0; cnt < nMemAddressRead*2; cnt+=2) { uint8_t tempBuffer = p[cnt+1]; p[cnt+1] = p[cnt]; p[cnt] = tempBuffer; } return 0; } |
|
| Автор: | >TEHb< [ Чт фев 29, 2024 14:25:46 ] |
| Заголовок сообщения: | Re: Работа с ИК-матрицей MLX90640 STM32 |
У ХАЛа были какие-то проблемы именно с И2Ц. То есть именно ошибки библиотек, пользователь никак повлиять не мог. Может, это оно? |
|
| Автор: | GARMIN [ Вс мар 10, 2024 21:59:50 ] |
| Заголовок сообщения: | Re: Работа с ИК-матрицей MLX90640 STM32 |
Посмотри как я баловался с этим датчиком. Там две ветки - одна с бесконечным циклом, другая с FreeRTOS. Я немного переработал библиотеку и засунул во флеш массив коррекции пикселей. Это сэкономило 10кБ ОЗУ. |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


