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

 
 
> STM32F103xC vs xB, обращение к несуществующей периферии
Serj78
сообщение May 3 2014, 17:02
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



В устройство может быть запаян как STM32F103xC , так и STM32F103xB чип.

В "старшем" собрате ( тип "С") есть дополнительные таймера и Usartы...

Что будет, если попытаться на чипе "B" обратиться к периферии, которой на чипе B - нету?

Например проинициализировать 5-й таймер или 4-й usart и попытаться заставить их работать?

Или можно как-то программно определить тип чипа и не пробовать такую скользкую ситуацию?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение May 4 2014, 06:11
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Serj78 @ May 3 2014, 23:02) *
Или можно как-то программно определить тип чипа и не пробовать такую скользкую ситуацию?

Можно включать тактирование блоков, и проверять, включилось или нет. Вот здесь VslavX описывал.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Serj78
сообщение May 4 2014, 10:55
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Цитата(AHTOXA @ May 4 2014, 10:11) *
Можно включать тактирование блоков, и проверять, включилось или нет. Вот здесь VslavX описывал.


Спасибо, попрбую..

Код
fsize = SYSMEM_FSIZE & 0x0000FFFF;


Очень полезная функция, получается что ее в моем случае достаточно.
смущает только , неизвестное макроопределение-

SYSMEM_FSIZE

Это просто адрес или что-то посложнее?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 5 2014, 07:38
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Serj78 @ May 4 2014, 14:55) *
...
SYSMEM_FSIZE
Это просто адрес или что-то посложнее?
Судя по контексту топика это константа во флешь-памяти контроллера по адресу 0x1FFFF7E0:
Код
#define SYSMEM_FSIZE  *((const volatile DWORD*)0x1FFFF7E0)


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Serj78
сообщение May 5 2014, 14:00
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Цитата(demiurg_spb @ May 5 2014, 11:38) *
Судя по контексту топика это константа во флешь-памяти контроллера по адресу 0x1FFFF7E0:
Код
#define SYSMEM_FSIZE  *((const volatile DWORD*)0x1FFFF7E0)


Aга, спасибо, уже попробовал sm.gif.
вроде работает на xB, а хС кажись как-то странно запорол - прошился, и - не определяется по swd... буду копать дальше..
Go to the top of the page
 
+Quote Post
Serj78
сообщение May 7 2014, 07:29
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Разобрался и впал в ступор..

похоже, какой-то конфликт периферии, причем одинаковой для B и С версий контроллера

если я выполняю вот эту строчку

Код
AFIO->MAPR|=(3<<4); //Usart3_remap[1:0)=11; (full remap - D8, D9)


То на контроллере " B " она выполняется и действительно ремапит ком 3 на выбранные ноги,
а на контроллере "С" этот код не приводит к ремапу выхода ( на ноге TX остается лог 0 ), и после прошивки контроллер перестает работать с swd!!
стираю его через бутлоадер..

PS: внимательно проверил- ремап таки происходит, но вот дебаг ( swd) почему-то продолжает не работать
Go to the top of the page
 
+Quote Post
adnega
сообщение May 7 2014, 07:51
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Serj78 @ May 7 2014, 11:29) *
Разобрался и впал в ступор..

похоже, какой-то конфликт периферии, причем одинаковой для B и С версий контроллера

если я выполняю вот эту строчку

Код
AFIO->MAPR|=(3<<4); //Usart3_remap[1:0)=11; (full remap - D8, D9)


То на контроллере " B " она выполняется и действительно ремапит ком 3 на выбранные ноги,
а на контроллере "С" этот код не приводит к ремапу выхода ( на ноге TX остается лог 0 ), и после прошивки контроллер перестает работать с swd!!
стираю его через бутлоадер..

Древнейшие грабли! Так пользоваться регистром MAPR (|=) запрещено! Почему - обсуждалось не раз))
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 08:42
Рейтинг@Mail.ru


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