реклама на сайте
подробности

 
 
> STM32F1->MCO качество сигнала
Tahoe
сообщение May 28 2013, 15:15
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



STM32F100, пин PA8, с альтернативными функциями USART1_CK / MCO / TIM1_CH1. Таймер1 отключен. USART1 включен, работает в асинхронном режиме. Включил MCO ( вывод клока для внешнего использования ), в качестве источника клока HSI. Наблюдаю такую картину, в моменты передачи по USART1:

Прикрепленное изображение
Прикрепленное изображение


Круто. Сам сигнал с MCO выводится для тактирования ПЛИС.

Кто-нить уже сталкивался с подобным?

С инициализацией проблем нет, там всего две строчки:
Код
void    BspPldInit( void )
{
    McuPinConfig(        MCU_PIN_PA08,        MCU_PIN_MODE_OUT_PP_AF_10MHz    );
    McuClkOutConfig(    MCU_CLK_OUT_SRC_HSI                                 );
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
koyodza
сообщение Jun 1 2013, 14:29
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



Использовал МСО для тактирования внешнего АЦП частотой 12МГц (выход HSE), был задействован USART1, всё отлично работало. Правда, на F103, но это скорее всего не важно.
Проверьте, не установлен ли бит CLKEN в USART1->CR2
Если на пин выведены альтернативные функции от нескольких модулей, нужно быть внимательным и не допускать одновременной работы таких модулей либо блокировать работу альтернативной функции в одном из модулей. В Вашем случае выход CLK у USART1 должен быть запрещен.

Цитата(DASM @ Jun 1 2013, 16:59) *
Если Вы видели эти стмовские полумакросы-полуфункции (иногда и не понять что есть что

Чтобы так говорить, нужно вначале самому их видеть. В приведенном топикстартером фрагменте использованы не стандартные библиотечные функции, а свои.
Как раз при отказе от библиотечных функций часто и возникают ошибки, связанные с неправильной инициализацией периферии. Поэтому прежде, чем писать свои функции, напрямую работающие с регистрами, лучше вначале взять и разобраться со стандартными, понять где и что не нравится, и только потом уже писать свои
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Jun 4 2013, 01:49
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(koyodza @ Jun 1 2013, 18:29) *
Проверьте, не установлен ли бит CLKEN в USART1->CR2

Сначала как раз так и было. И на выходе наблюдал клок от USART. Но на момент создания топика, режим USART был изменен на асинхронный.

Цитата(koyodza @ Jun 1 2013, 18:29) *
Как раз при отказе от библиотечных функций часто и возникают ошибки, связанные с неправильной инициализацией периферии.

Именно потому и спросил, сталкивался кто-либо с подобным.

Цитата(koyodza @ Jun 1 2013, 18:29) *
Поэтому прежде, чем писать свои функции, напрямую работающие с регистрами, лучше вначале взять и разобраться со стандартными, понять где и что не нравится, и только потом уже писать свои

Скажу больше. Пришлось даже сделать то, что делать не люблю - самостоятельно задефайнить биты в регистрах, вроде:

Код
...
typedef    enum    STM32_USART_SR_e
{
    STM32_USART_SR_PE                            =     0,
    STM32_USART_SR_FE                            =     1,
    STM32_USART_SR_NE                            =     2,
    STM32_USART_SR_ORE                            =     3,
    STM32_USART_SR_IDLE                            =     4,
    STM32_USART_SR_RXNE                            =     5,
    STM32_USART_SR_TC                            =     6,
    STM32_USART_SR_TXE                            =     7,
    STM32_USART_SR_LBD                            =     8,
    STM32_USART_SR_CTS                            =     9
}    STM32_USART_SR;

typedef    enum    STM32_USART_CR1_e
{
    STM32_USART_CR1_SBK                            =     0,
    STM32_USART_CR1_RWU                            =     1,
    STM32_USART_CR1_RE                            =     2,
    STM32_USART_CR1_TE                            =     3,
    STM32_USART_CR1_IDLEIE                        =     4,
    STM32_USART_CR1_RXNEIE                        =     5,
    STM32_USART_CR1_TCIE                        =     6,
    STM32_USART_CR1_TXEIE                        =     7,
    STM32_USART_CR1_PEIE                        =     8,
    STM32_USART_CR1_PS                            =     9,
    STM32_USART_CR1_PCE                            =    10,
    STM32_USART_CR1_WAKE                        =    11,
    STM32_USART_CR1_M                            =    12,
    STM32_USART_CR1_UE                            =    13,
    STM32_USART_CR1_OVER8                        =    15
}    STM32_USART_CR1;

...


В реальности, с учетом нехватки времени, процесс выглядит немного иначе.при необходимости задействовать в очередном проекте ту или иную периферию, под нее создается библиотека. В общем, конечно, она проверяется на предмет всех режимов, но понятно дело, что проблемы вылезают только в тех режимах, которые используются в данном проекте. На примере того же USART - если на момент создания библиотеки, в проекте использовался асинхронный режим, по понятным причинам именно он протестирован наиболее тщательно.
С другой стороны, единообразие, при кодировании, позволяет свести потенциальные ошибки к минимуму.



Цитата(scifi @ Jun 1 2013, 23:22) *
Всегда манипулировал регистрами, опираясь только на Reference Manual. Всё получалось. Библиотеку не использовал из-за неприязни (кривой она показалась). Сейчас, однако, мог бы и потерпеть неприязнь, если библиотека реально ускоряет разработку: жизнь слишком коротка. Старею, наверное :-)

Подход, конечно, правильный. Но я, например, последнее время, постоянно сталкиваюсь с невысоким качеством кода. Собсно, последний раз, когда я видел/использовал пристойный код от производителей микроконтроллеров, это был USB-стек от Атмел - хорошо типизированый, с вменяемой структурой.
Что касается библиотек, то помнится напарывался у того же Атмел, в ней же была проблема при работе с SPI, что-то касательно SS. А про ST даже говорить не хочу.

Цитата(DASM @ Jun 1 2013, 19:28) *
Да никто не против, а еще лучше - привести кусок дизасма, но автор убежал.

Нет, .... Никто, никуда не убежал. Все банальнее:

2. ... нахожусь в сильном цейтноте.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Tahoe   STM32F1->MCO качество сигнала   May 28 2013, 15:15
- - diwil   подтверждаю. когда работает уарт на передачу, то о...   May 29 2013, 04:54
- - DASM   А можно посмотреть код инициализации на уровне асс...   May 29 2013, 05:05
- - DASM   Очередной "бэгрипорт" не состоялся ?   May 30 2013, 08:49
- - ViKo   Цитата(Tahoe @ May 28 2013, 18:15) Круто....   May 30 2013, 11:01
|- - Tahoe   Цитата(ViKo @ May 30 2013, 15:01) Не могу...   May 30 2013, 14:13
- - Genadi Zawidowski   Ну пять-то вольт откуда в процессоре вообще? Это н...   May 30 2013, 19:08
|- - Tahoe   Цитата(Genadi Zawidowski @ May 30 2013, 23...   May 30 2013, 21:10
|- - Genadi Zawidowski   Цитата(Tahoe @ May 31 2013, 01:10) Нет. Н...   May 31 2013, 22:36
- - ViKo   А вы посмотрите, что делается на разных концах 100...   May 31 2013, 05:57
- - khach   Цитата(Tahoe @ May 28 2013, 17:15) Кто-ни...   Jun 1 2013, 07:22
- - DASM   Абсолютно поддерживаю. Если Вы видели эти стмовски...   Jun 1 2013, 13:59
|- - scifi   Цитата(koyodza @ Jun 1 2013, 18:29) Поэто...   Jun 1 2013, 19:22
||- - ViKo   Цитата(scifi @ Jun 1 2013, 22:22) Всегда ...   Jun 3 2013, 08:20
||- - jcxz   Цитата(ViKo @ Jun 3 2013, 14:20) Аналогич...   Jun 4 2013, 06:30
- - DASM   Да никто не против, а еще лучше - привести кусок д...   Jun 1 2013, 15:28
- - Golikov A.   2 раза на 2 разных процах написал без библиотек по...   Jun 3 2013, 11:32
- - ViKo   Цитата(Golikov A. @ Jun 3 2013, 14:32) 2 ...   Jun 3 2013, 19:51
- - Golikov A.   Цитата(ViKo @ Jun 3 2013, 23:51) Вы говор...   Jun 4 2013, 05:35


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th August 2025 - 01:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01441 секунд с 7
ELECTRONIX ©2004-2016