Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 31.01.2019, 13:57  
Donker
Временная регистрация
 
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Donker на пути к лучшему
По умолчанию Проблеммы с передачей по USART на STM32F105RBT6

Передаю с STM32F105RBT6 байт:

Цитата:
USART_SendData(USART1,0x31);
на терминал Bray Terminal v1.9, а приходит байт 0xC8 (это 0x31 задом на перёд) а иногда вообще 0xC9 (см. Терминал.png).

настройка USART:

Нажмите, чтобы открыть спойлер
//----------------------------------------------------------------------------------------
//* Enable USART1 clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

/* NVIC Configuration */
NVIC_InitTypeDef NVIC_InitStructure;
/* Enable the USARTx Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriori ty = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

/* Configure the USART1 */
USART_InitTypeDef USART_InitStructure;

/* USART1 configuration ------------------------------------------------------*/
/* USART1 configured as follow:
- BaudRate = 115200 baud
- Word Length = 8 Bits
- One Stop Bit
- No parity
- Hardware flow control disabled (RTS and CTS signals)
- Receive and transmit enabled
- USART Clock disabled
- USART CPOL: Clock is active low
- USART CPHA: Data is captured on the middle
- USART LastBit: The clock pulse of the last data bit is not output to
the SCLK pin
*/
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

USART_Init(USART1, &USART_InitStructure);

/* Enable USART1 */
USART_Cmd(USART1, ENABLE);

/* Enable the USART1 Receive interrupt: this interrupt is generated when the
USART1 receive data register is not empty */
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
//----------------------------------------------------------------------------------------


Пишу в Keil 5.26.



Можно ли изменить направление байта на стороне микроконтроллера?

Можно ли изменить направление байта на стороне Bray Terminal v1.9?

Нормальные ли тайминги для выбранной скорости 115200 (см. ЛА.png)?
девять битов должны передаваться за 78us (1/115200)*9=0,000 078 125
а передаются за 58us судя по ЛА!
Миниатюры:
Нажмите на изображение для увеличения
Название: ЛА.png
Просмотров: 0
Размер:	38.0 Кб
ID:	137900   Нажмите на изображение для увеличения
Название: Терминал.png
Просмотров: 0
Размер:	37.1 Кб
ID:	137901  
Реклама:
Donker вне форума  
Непрочитано 31.01.2019, 23:05  
Donker
Временная регистрация
 
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Donker на пути к лучшему
По умолчанию Re: Проблеммы с передачей по USART на STM32F105RBT6

Подобрал число USART_InitStructure.USART_BaudRate = 85038; что бы увидеть в ЛА тайминг 9 бит за 78us и передача от микроконтроллера на терминал заработала!

APB2 у меня настроена на 36мГц основная частота 72мГц (это точно, иначе неправильно работали бы таймер и DWT)
Нажмите, чтобы открыть спойлер
void clock_ini(void) //настройка тактирования
{
ErrorStatus HSEStartUpStatus;
/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------------*/
RCC_DeInit(); /* Системный RESET RCC (делать не обязательно, но полезно на этапе отладки) */
RCC_HSEConfig( RCC_HSE_ON); /* Включаем HSE (внешний кварц) */
HSEStartUpStatus = RCC_WaitForHSEStartUp(); /* Ждем пока HSE будет готов */
if (HSEStartUpStatus == SUCCESS) /* Если с HSE все в порядке */
{
/* Следующие две команды касаются исключительно работы с FLASH.
Если вы не собираетесь использовать в своей программе функций работы с Flash,
FLASH_PrefetchBufferCmd( ) та FLASH_SetLatency( ) можно закомментировать */

//FLASH_PrefetchBufferCmd( FLASH_PrefetchBuffer_Enable); /* Включаем Prefetch Buffer */

/* FLASH Latency.
Рекомендовано устанавливать:
FLASH_Latency_0 - 0 ‹ SYSCLK? 24 MHz
FLASH_Latency_1 - 24 MHz ‹ SYSCLK ? 48 MHz
FLASH_Latency_2 - 48 MHz ‹ SYSCLK ? 72 MHz */
FLASH_SetLatency( FLASH_Latency_2);

RCC_HCLKConfig( RCC_SYSCLK_Div1); /* HCLK = SYSCLK */ /* Смотри на схеме AHB Prescaler. Частота не делится (RCC_SYSCLK_Div1) */
RCC_PCLK2Config( RCC_HCLK_Div1); /* PCLK2 = HCLK */ /* Смотри на схеме APB2 Prescaler. Частота не делится (RCC_HCLK_Div1) */
RCC_PCLK1Config( RCC_HCLK_Div2); /* PCLK1 = HCLK/2 */ /* Смотри на схеме APB1 Prescaler. Частота делится на 2 (RCC_HCLK_Div2) потому что на выходе APB1 должно быть не более 36МГц (смотри схему) */
/* PLLCLK = 8MHz * 9 = 72 MHz */
/* Указываем PLL от куда брать частоту (RCC_PLLSource_HSE_Div1) и на сколько ее умножать (RCC_PLLMul_9) */
/* PLL может брать частоту с кварца как есть (RCC_PLLSource_HSE_Div1) или поделенную на 2 (RCC_PLLSource_HSE_Div2). Смотри схему */
//RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLConfig(RCC_PLLSource_PREDIV1 , RCC_PLLMul_9);
RCC_PLLCmd( ENABLE); /* Включаем PLL */
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {} /* Ждем пока PLL будет готов */
RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK); /* Переключаем системное тактирование на PLL */
while (RCC_GetSYSCLKSource() != 0x0 {} /* Ждем пока переключиться */
}
else /* Проблемы с HSE. Тут можно написать свой код, если надо что-то делать когда микроконтроллер не смог перейти на работу с внешним кварцом */
{

while (1) {} /* Пока тут заглушка - вечный цикл*/
}
}

Этот проект тестовый, поэтому я использую загрузку прошивки в RAM, флэш не трогаю, когда разберусь с приёмом,
сделаю обычный проект, посмотрю что изменится

************************************************** *******

Заливка прошивки обычным образом во флэш проблему занижения таймингов не решает.
Если USART использует переменную SystemCoreClock то такое искажение можно объяснить значением SystemCoreClock в 56 мГц,
но откуда там могла взяться такая цифра я не понимаю, если кто хочет помочь выкладываю проект:
Вложения:
Тип файла: rar STM32F105RBT6 + USART.rar (760.5 Кб, 0 просмотров)
Donker вне форума  
Непрочитано 31.01.2019, 23:39  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,901
Сказал спасибо: 499
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Проблеммы с передачей по USART на STM32F105RBT6

Сообщение от Donker Посмотреть сообщение
но откуда там могла взяться такая цифра я не понимаю
Я тоже. Разбираться в дебрях SPL - скучно. Но почему бы не пробежаться отладчиком и не посмотреть, что заносится в регистры USART и откуда занесенное берется?
AR_Favorit вне форума  
Сказали "Спасибо" AR_Favorit
mike-y-k (01.02.2019)
Непрочитано 01.02.2019, 01:52  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,853 раз(а) в 2,924 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Проблеммы с передачей по USART на STM32F105RBT6

Donker, поддержу уважаемого AR_Favorit. Пока Вы только предполагаете что-то, не видя даже листинга ассемблера для Вашего проекта. В отладчике можно проверить все предположения реальными значениями в регистрах и памяти…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 01.02.2019, 09:57  
Donker
Временная регистрация
 
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Donker на пути к лучшему
По умолчанию Re: Проблеммы с передачей по USART на STM32F105RBT6

На другом форуме ответили - ошибка в библиотеке, можно лепить костыли кому какие нравятся:

https://radiokot.ru/forum/viewtopic....61277#p3561277
Donker вне форума  
Непрочитано 04.02.2019, 01:12  
Donker
Временная регистрация
 
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Donker на пути к лучшему
По умолчанию Re: Проблеммы с передачей по USART на STM32F105RBT6

Если прописать в свойствах проекта HSE_VALUE=8000000 (частота кварца), всё начинает работать правильно.
Donker вне форума  
Непрочитано 04.02.2019, 02:49  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,853 раз(а) в 2,924 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Проблеммы с передачей по USART на STM32F105RBT6

Donker, а какая частота была установлена до этого?
Таки если коэффициенты при компиляции от неверной частоты считались - "тады ой"
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…

Последний раз редактировалось mike-y-k; 04.02.2019 в 02:52.
mike-y-k вне форума  
Непрочитано 04.02.2019, 15:10  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Проблеммы с передачей по USART на STM32F105RBT6

Сообщение от Donker Посмотреть сообщение
девять битов должны передаваться за 78us (1/115200)*9
А если подумать? Почему 9-то бит?
Someone вне форума  
Непрочитано 04.02.2019, 23:07  
Donker
Временная регистрация
 
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Donker на пути к лучшему
По умолчанию Re: Проблеммы с передачей по USART на STM32F105RBT6

Девять бит просто потому, что так однозначно есть фронт за который можно зацепится маркером логического анализатора если старший бит равен 0.
Donker вне форума  
Непрочитано 05.02.2019, 00:19  
dkm
Вид на жительство
 
Регистрация: 10.04.2010
Сообщений: 301
Сказал спасибо: 25
Сказали Спасибо 136 раз(а) в 79 сообщении(ях)
dkm на пути к лучшему
По умолчанию Re: Проблеммы с передачей по USART на STM32F105RBT6

Сообщение от Donker Посмотреть сообщение
Девять бит просто потому, что так однозначно есть фронт за который можно зацепится маркером логического анализатора если старший бит равен 0.
А без него не цепляется? О! Не иначе как действительно микроконтроллеры функционируют на волшебном дыму.
dkm вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32f415 и usart b USB bass1981 ARM 0 07.07.2017 14:47
Глюк приёма данных по USART supercelt ARM 85 18.04.2017 04:58
Пропадает байт 0x55 при передачи USART vavan1983 PIC 2 12.02.2015 23:19
USART MEGA8 yuta_86 Микроконтроллеры, АЦП, память и т.д 23 12.02.2012 04:30
Помогите разобраться с USART в CodeVisionAVR vendim Микроконтроллеры, АЦП, память и т.д 20 26.07.2007 16:42


Часовой пояс GMT +4, время: 11:42.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot