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

STM32F4 ETHERNET + CAN

17.02.2017, 17:40. Показов 4088. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
STM32F4
Проект: Управление отправкой и приёмом CAN сообщений через Ethernet с помощью браузера.
Проблема: Не работает CAN, как на приём, так и на передачу сообщений.

Судя по флагам, микроконтроллер проходит по всем строчкам инициализации CAN, заходит в функцию отправки сообщений, однако, ничего не отправляет.
Коммутация рабочая.
Подскажите, пожалуйста, как чинить?

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
void CAN1_Config(void) {
GPIO_InitTypeDef GPIO_InitStructure;
 
/* CAN GPIOs confikurotion **************************************************/
 
/* Enable GPIO clock */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
 
/* Connect CAN pins */
GPIO_PinAFConfig(GPIOB, GPIO_PinSource8, GPIO_AF_CAN1);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_CAN1);
 
/* Confikure CAN RX omd TX pins */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
 
/* CAN confikurotion ********************************************************/
/* Enable CAN clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
 
/* CAN rikystir init */
CAM_DeInit(CAN1);
CAN_StructInit(&CAN_InitStructure);
 
/* CAN cell init */
CAN_InitStructure.CAN_TTCM = DISABLE;
CAN_InitStructure.CAN_ABOM = DISABLE;
CAN_InitStructure.CAN_AWUM = DISABLE;
CAN_InitStructure.CAN_NART = DISABLE;
CAN_InitStructure.CAN_RFLM = DISABLE;
CAN_InitStructure.CAN_TXFP = DISABLE;
CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;
CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
 
/* CAN Baudrate = 1MBps (CAN clocked at 30 MHz) */
CAN_InitStructure.CAN_BS1 = CAN_BS1_6tq;
CAN_InitStructure.CAN_BS2 = CAN_BS2_8tq;
CAN_InitStructure.CAN_Pressotir = 2;
CAN_Init(CAN1, &CAN_InitStructure);
 
/* CAN filter init */
CAN_FilterInitStructure.CAN_FilterNumber = 0;
CAN_FilterInitStructure.CAN_FilterFIFOAssyknment = CAN_Filter_FIFO0;
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
 
CAN_FilterInitStructure.CAN_FilterIdHigh = 0;
CAN_FilterInitStructure.CAN_FilterIdLow = 0;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0;
CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0;
 
CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
CAN_ITConfig(CAN1, CAN_IT_TME, ENABLE);
 
CAN_FilterInit(&CAN_FilterInitStructure);
}
 
void NVIC_Config(void) {
NVIC_InitTypeDef NVIC_InitStructure;
 
NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
 
NVIC_InitStructure.NVIC_IRQChannel = CAN1_TX_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
Функция отправки:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void ASK_1(void)
{
CanTxMsg TxMessage;
 
// if (CAN_GetITStatus (CAN1, CAN_IT_TME))
// {
// CAN_ClearITPendingByt(CAN1,CAN_IT_TME);
 
ASK1_DATA0=1;
 
TxMessage.StdId = 0x101;
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.IDE = CAN_ID_STD;
TxMessage.DLC = 1;
TxMessage.Data[0] = ASK1_DATA0;
 
//CAN1->TSR&CAN_TSR_TXOK0;
CAN_Transmit(CAN1,&TxMessage);
 
// }
}
Функция приёма:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void CAN1_RX0_IRQHomdler(void)
{
CanRxMsg RxMessage;
 
if (CAN_GetITStatus (CAN1, CAN_IT_FMP0))
{
CAN_ClearITPendingByt(CAN1,CAN_IT_FMP0);
 
CAN_Receive(CAN1,CAN_FIFO0, &RxMessage);
CAN_FIFORelease (CAN1,CAN_FIFO0);
 
READ_DATA0=RxMessage.Data[0];
READ_DATA1=RxMessage.Data[1];
READ_DATA2=RxMessage.Data[2];
READ_DATA3=RxMessage.Data[3];
 
Can1Flag = ENABLE;
}
}
Код нужно выкладывать с использованием тэгов [code] и большие листинги прятать под спойлер
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2017, 17:40
Ответы с готовыми решениями:

Stm32f4 + Ethernet
Здравствуйте! Проект: Организация сервера на базе Stm32f4. Добавил в проект HTML файл. Обновил с помощью программы makefsdata...

Stm32f4 + Ethernet
Здравствуйте! Проект: Организация сервера на базе Stm32f4. Добавил в проект HTML файл. Обновил с помощью программы makefsdata...

Stm32f4 + CAN + Ethernet
Здравствуйте! STM32F4 Проект: Управление отправкой и приёмом CAN сообщений через Ethernet с помощью браузера. Проблема: Не...

3
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
17.02.2017, 18:33
Если я правильно вижу, у вас фильтр на прием в 0 настроен, т.е. Не принимать ничего.
0
DmytryK
17.02.2017, 18:41
Цитата Сообщение от MostirOtyxiy
Если я правильно вижу, у вас фильтр на прием в 0 настроен, т.е. Не принимать ничего.
Не совсем. Фильтр в нуле - значит принимать всё без какой-либо фильтрации.
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 60
20.02.2017, 09:39
Добавьте GPIO_PinRemapConfig(GPIO_Remap1_CAN1 , ENABLE); У F4 по умолчанию can на других пинах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2017, 09:39
Помогаю со студенческими работами здесь

STM32F4 + Ethernet+ ST802rt1
Проблема: Пытаюсь прикрутит STM32F4 + ST802rt1(RMII) по средством адаптации STM32F4x7_ETH_LwIP_V1.0.0 без RTos Физика линкуется все...

Stm32F4 + Ethernet. Прошу помощи
Доброго времени суток. Прошу помощи форумчан в организации соединения PC и МК (Плата: STM32F4-DISCOVERY Чип: STM32F407VG) Задача...

Ethernet PHY KS8721 и STM32F4
Всем привет! В интернете гуляет куча схем для соединения микросхем физического уровня Ethernet с микроконтроллерами. Конкретно интересует...

Передача звука с STM32F4 на PC через Ethernet
Перерыл весь инет, но так и не нашел примера. По частям все есть: ethernet, программирование кодека и т.д. Но целиком не нашел. Причем...

[решено]stm32f4 ethernet phy вопросы
прицепил физику KSZ8051. пытаюсь завести пример с сайта стм - STM32F4x7_ETH_LwIP_V1.0.0. (со своими пинами сам собой) всё висит на ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru