|
STM32 HAL SPI ошибка или глюки IAR,, ошибка чтения SPI с помощью HAL от CubeMX |
|
|
|
Jul 27 2016, 10:20
|
Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 4-03-09
Из: Беларусь, Минск
Пользователь №: 45 665

|
STM32F051, IAR, CubeMX Читаю в пакетном режиме два регистра - ответ правильный. Добавляю чтение 3-его регистра - в приемном буфере ерунда. На осцилографе картинка нормальная - все диаграмы и ответы красивые и правильные... В парметрах функции пробовал и 3 сразу читать и в цикле по одному байту - не получается.... И вот так уже попробовал: Код uint8_t localRxBuf[4]; uint8_t data1,data2,data3;
HAL_SPI_Receive(&hspi1, (uint8_t*)&localRxBuf[0], 1, 10000); data1 = localRxBuf[0]; HAL_SPI_Receive(&hspi1, (uint8_t*)&localRxBuf[0], 1, 10000); data2 = localRxBuf[0]; //HAL_SPI_Receive(&hspi1, (uint8_t*)&localRxBuf[0], 1, 10000); //data3 = localRxBuf[0]; придобавлении третьего чтения портятся data1,data2,data3......мистика какая-то. Повторюсь - на осцилографе все красиво и правильно Такое ощущение, что HAL-библиотека глючит... внутрь HAL что-ли полезть
Сообщение отредактировал IgorKossak - Jul 27 2016, 14:30
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!
|
|
|
|
|
 |
Ответов
|
Jul 28 2016, 14:41
|
Частый гость
 
Группа: Участник
Сообщений: 130
Регистрация: 26-06-06
Из: Березовский
Пользователь №: 18 355

|
В CR2 есть такой хитрый битик - FRXTH, так вот у меня получилось только так: CODE void SPI1_WriteRead(uint8_t *tx_buf, uint8_t *rx_buf, uint8_t length) { SPI1_CS_On(); SPI1_WriteRead_NotCS(tx_buf, rx_buf, length); SPI1_CS_Off(); }
void SPI1_WriteRead_NotCS(uint8_t *tx_buf, uint8_t *rx_buf, uint8_t length) { uint8_t rx_length = length;
if (length > 1) { SPI1->CR2 &= ~SPI_CR2_FRXTH; // Threshold = 16 } else { SPI1->CR2 |= SPI_CR2_FRXTH; // Threshold = 8 } while (length) { while ((SPI1->SR & SPI_I2S_FLAG_TXE) == 0);
if (length > 1) { SPI1->DR = *((uint16_t *)tx_buf); tx_buf += 2; length -=2; } else { *(__IO uint8_t *)&SPI1->DR = *tx_buf++; length--; } while ((SPI1->SR & SPI_I2S_FLAG_RXNE) == 0); if (rx_length > 1) { *((uint16_t *)rx_buf) = SPI1->DR; rx_buf += 2; rx_length -= 2; if (rx_length <= 1) { SPI1->CR2 |= SPI_CR2_FRXTH; // Threshold = 8 } } else { (*rx_buf++) = *(__IO uint8_t *)&SPI1->DR; } } }
|
|
|
|
Сообщений в этой теме
Pasa STM32 HAL SPI ошибка или глюки IAR, Jul 27 2016, 10:20 serglg хочу заметить, что с HAL_SPI_Receive и у меня како... Jul 27 2016, 15:57 Pasa Цитата(serglg @ Jul 27 2016, 19:27) Пока ... Jul 27 2016, 17:27  serglg Цитата(Pasa @ Jul 27 2016, 23:27) ...... ... Jul 28 2016, 04:14 Pasa В инициализации SPI в HAL:
Код if(hspi-... Jul 27 2016, 20:17 tehn1k Как Вы выбираете чтение того или иного регистра, е... Jul 28 2016, 05:41 serglg Цитата(tehn1k @ Jul 28 2016, 11:41) Как В... Jul 28 2016, 06:09  tehn1k Цитата(serglg @ Jul 28 2016, 10:09) Мне н... Jul 28 2016, 06:55  Lagman Цитата(serglg @ Jul 28 2016, 09:09) Мне н... Jul 28 2016, 09:35   k155la3 Цитата(Lagman @ Jul 28 2016, 12:35) А зач... Jul 28 2016, 10:18 k155la3 Цитата(Pasa @ Jul 27 2016, 13:20) STM32F0... Jul 28 2016, 06:09 Pasa Обмен идет с CC2500
Цитата(k155la3 @ Jul 28 ... Jul 28 2016, 19:48 k155la3 Цитата(Pasa @ Jul 27 2016, 13:20) И вот т... Jul 28 2016, 12:45 x893 Функция SPI Receive в HAL занимает строк 20 из них... Jul 28 2016, 14:17 Pasa Цитата(x893 @ Jul 28 2016, 17:47) Функция... Jul 28 2016, 20:08  k155la3 Цитата(Pasa @ Jul 28 2016, 23:08) Никаког... Jul 29 2016, 06:47 x893 Ничего хитрого
The RXNE flag is set depending on t... Jul 28 2016, 16:14 alag57 Цитата(x893 @ Jul 28 2016, 21:14) Ничего ... Jul 29 2016, 03:11 x893 Проверил с stm32f030 и CC2500 - всё работает как ч... Jul 28 2016, 19:49 serglg Ну вот и моя хитрость. Чтение делаю 3 (три) раза п... Jul 29 2016, 06:12 alag57 Цитата(serglg @ Jul 29 2016, 11:12) Ну во... Jul 29 2016, 07:30  serglg Цитата(alag57 @ Jul 29 2016, 13:30) Это н... Jul 29 2016, 08:36   alag57 Цитата(serglg @ Jul 29 2016, 13:36) Вы на... Jul 29 2016, 13:33 esaulenka Цитата(serglg @ Jul 29 2016, 09:12) Ну во... Jul 29 2016, 13:42 Pasa На сегодняшний момент вызывает вопрос код в HAL_SP... Jul 29 2016, 09:04 k155la3 Цитата(Pasa @ Jul 27 2016, 13:20) (1)
HAL... Jul 29 2016, 10:03 Pasa Цитата(k155la3 @ Jul 29 2016, 13:33) Позв... Jul 29 2016, 10:55  k155la3 Цитата(Pasa @ Jul 29 2016, 13:55) вы счит... Jul 29 2016, 12:12 esaulenka Цитата(k155la3 @ Jul 29 2016, 13:03) Позв... Jul 29 2016, 13:22 Pasa может здесь и говорится о нашей проблемке ..... ... Jul 29 2016, 15:04 serglg Открываются глаза. Народ говорит, что вся разница ... Jul 30 2016, 05:43 Pasa На сегодняшний момент моя примочка по предваритель... Aug 1 2016, 07:57 serglg Цитата(Pasa @ Aug 1 2016, 13:57) На сегод... Aug 1 2016, 12:14  Pasa Цитата(serglg @ Aug 1 2016, 15:44) Фактич... Aug 1 2016, 19:24   serglg Цитата(Pasa @ Aug 2 2016, 01:24) Собствен... Aug 2 2016, 13:17 ave! Прочитал всю ветку, пробовал все варианты под CooC... May 9 2017, 18:34 serglg Цитата(ave! @ May 10 2017, 00:34) Про... May 10 2017, 05:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|