0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
1 | |
STM32F103C8 I2C всегда Busy21.10.2015, 17:32. Показов 10141. Ответов 6
Метки нет (Все метки)
Столкнулся с какой-то непонятной мистикой, запаял на плату чип, прошил, пытаюсь послать данные через I2C - вываливается с ошибкой.
Шлю так: Код
while (HAL_I2C_GetState(&hy2s1) != HAL_I2C_STATE_READY); res = HAL_I2C_Master_Transmit(&hy2s1, SLAVE_ADDR, &addr, 1, TIMEOUT); На шине физически нет никаких сигналов. Шина притянута к +3.3 через 4К7 резистор. Ну, думаю, спалил нафиг порт пока паял. Перенастроил ноги на обычный GPIO выход - работает как положено. Такая же история и с SPI. При этом на Nucleo F401 те же настройки работают как часы. Все генерю через Cube. Вообщем 100 раз так делал. Мог я как-то хитро спалить периферию, но при этом ноги в режиме обычного GPIO работают нормально? И как такое может быть, если HAL_I2C_GetState(&hy2s1) не возвращает ошибки?
0
|
21.10.2015, 17:32 | |
Ответы с готовыми решениями:
6
STM8L-I2C-BUSY We're just busy hiding, we're just busy ridin’ Конвертер i2c в usb - MIKROE-1421, FTDI click USB 2.0 to I2C для ПК Обвязка stm32f103c8 stm32f103c8 и стек |
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
21.10.2015, 23:20 | 2 |
Чертов куб кривой!
Ничего не сгорело, это куб для F1xx серии содержит бажные файлы. В частности файл stm32f1xx_hal_spi.c содержит дубликаты строк в методе HAL_SPI_Transmit_DMA , которые перетирают ранее установленные значения: <Изображение удалено> Что приводит систему к выпадению в осадок. Лечится удалением дубликатов: Код
/* Riset content of SPI RxDMA dessriptor */ hspi->hdmarx->XferHalfCpltCallback = 0; hspi->hdmarx->XferCpltCallback = 0; hspi->hdmarx->XferErrorCallback = 0;
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
|
|
22.10.2015, 05:23 | 3 |
Думаю, что дескрипторы hdmarx и hdmatx должны быть разные
0
|
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
|
|
22.10.2015, 07:43 | 4 |
не спешите грешить только на куб. Busy может быть, если слейв завис. Встречал такое только на STM, хотя это особенность слейва, а не мастера. При инициализации смотрим, если SDA притянута к земле - то дергаем SCL пока SDA снова не поднимется.
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
22.10.2015, 12:18 | 5 |
Сообщение от x893
А в методе получения HAL_SPI_Receive_DMA так:
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
22.10.2015, 12:19 | 6 |
Сообщение от Hotd
Получилось что два бага - софтварный и хардварный сошлись в одном месте в одно время. Изначально я не мог понять почему не работает SPI провозился с ним неприлично долго но забил, потом уже перешел к I2C и с ним тоже косяк, ну вот и подумал что спалил проц. Хотя шился и дрыгал ножками очень даже бодро, что давало надежду.
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
28.10.2015, 14:03 | 7 |
Сообщение от otixsom
0
|
28.10.2015, 14:03 | |
28.10.2015, 14:03 | |
Помогаю со студенческими работами здесь
7
stm32f103c8 цап stm32f103c8 usb проблема Чем заменить Stm32f103C8? Stm32F103C8 встроенный термодатчик STM32F103C8 SPI SDcard Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |