Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/75: Рейтинг темы: голосов - 75, средняя оценка - 4.97
moxbityx

STM32F103 и CAN HAL

29.09.2016, 13:40. Показов 15412. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане!
Уже неделю бьюсь над проблемой CAN`а в МК STM32F103C8T6.
Пользуюсь библиотекой HAL, инициализировал CAN на ножках, PA11 и PA12 (RX и TX). Частоту настроил на 72мгц, APB1 на 36мгц.
Сгенерировал код (для KEIL v5). В MX_CAN_Init указал параметры предделителя = 12, SWJ_1TQ, BS1_1TQ, BS2_1TQ.
По расчетам, скорость должна была получиться 1мбит.
В main заполнил таким образом:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C2_Init();
MX_USORT1_UART_Init();
MX_CAN_Init();
 
hcan.pTxMsg = &can1TxMessage;
hcan.pTxMsg->StdId = 0x11;
hcan.pTxMsg->IDE = CAN_ID_STD;
hcan.pTxMsg->RTR = CAN_RTR_DATA;
hcan.pTxMsg->DLC = 2;
hcan.pTxMsg->Data[0] = 0x01;
hcan.pTxMsg->Data[1] = 0xC1;
 
while (1)
{
if(HAL_CAN_Transmit(&hcan, 10) != HAL_OK)
{
/* Transmition Error */
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_12);
HAL_Delay(100);
}
И светодиод начинает мигать каждые 100мс, уведомляя об ошибке передачи.
Насколько я понимаю, CAN не UART и в "воздух" (без трансивера и приемника) передавать ничего не будет. Осциллографом на ножках тоже никакой жизни.
После подключил через трансивер на приемник по USB, - ситуация не изменилась. Только ножки выставились в лог 1.
После посылки какого-либо сообщения в МК с компьютера в программе выдается BusHeavy и на осцилле на ножке TX появляется какой-то сигнал.
Скажите, в чем может быть проблема? Надо еще что то инициализировать, или заполнять?
С уважением,
Максим.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.09.2016, 13:40
Ответы с готовыми решениями:

Bootloader с использованием HAL (stm32f103)
Бутлоадер у меня использует много периферии, DMA. Заработало после того, как __disable_irq () заменил на HAL_DeInit(). Всё остальное...

HAL
Почему при использовании HAL выбрасывает исключение. возможно ли это из-за интегрированной видеокарты. Какие правила для использования HAL?

STM32CubeMX HAL
Здравствуйте! Нужен совет по работе STM32CubeMX HAL. Если я правильно понимаю, STM позиционирует библиотеку STM32CubeMX HAL как более...

3
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 27
29.09.2016, 18:51
Если хотите увидеть сигналы на шине кан, то вам понадобится как минимум 2 устройства. Для начала попробуйте запустить режим Лупбэк. В данном режиме вам нужно только 1 устройство, которое как бы шлёт сообщения самому себе. Не забывайте о настройке фильтров.
И ещё
Цитата Сообщение от moxbityx
После подключил через трансивер на приемник по USB
можно поподробнее, что и как вы подключали?
0
moxbityx
29.09.2016, 19:44
Трансивер sn65hvd230, включение согласно стандартной схеме, приемник pcan-usb. Выставляю в приемнике скорость ту же что и на передатчике, и при попытке что-то отправить в STM32 шина переходит в BUSHEAVY.
Вопрос в следующем - Первое, должна ли быть "жизнь" на ножках МК при попытке передачи без подключения трасивера, и второе - надо ли настраивать различные фильтры приема, если мой модуль должен только отправлять сообщения в CAN- сеть? Достаточно ли заполнения структуры посылки (DLC, DATA, StdID) и функции HAL_CAN_Transmit? (аналогично функции передачи данных в UART) Есть ли пример рабочего кода на отправку, может у кого, написанный при помощи HAL драйвера?
С уважением,
Максим.
moxbityx
02.10.2016, 14:43
Если вдруг кто будет разбираться тоже - проблема была в глупой непропайке контактов на трансивере :)
Для передачи достаточно вызвать функцию HAL_CAN_Transmit, перед которой необходимо сформировать посылку, указав StdID, IDE, RTR, DLC, Data.
С уважением,
Максим.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2016, 14:43
Помогаю со студенческими работами здесь

win7 и hal
Подскажите плз как на Windows 7 посмотреть используемый уровень абстрагирования от оборудования. И есть ли он вообще на ноутбуках? Заранее...

HAL, ADC и 5В
Решил завести АЦП на STM32. Почитал HAL, написал функции инициализации и чтения согласно мануалам и примерам: ADC_LL_Init()/*...

MSP430 HAL
На глаза попался один библиотечный файл hal_UCS. Но не как на сайте TI не могу найти полный комплект библиотек HAL. Подскажите где взять....

HAL+ModBus
Приветствую. Кто нибудь пересаживал фримодбас под хал библиотеки? Как "обошли" ожидание "нормального" прерывания взамен того...

Stm32f100rb HAL
Здравствуйте! Нужно написать небольшую программу для stm32f100rb. В качестве среды была выбрана IAR Workbench. Настройки линковщика,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru