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

Проблемы с CAN

26.01.2016, 14:50. Показов 3255. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Имеется stm32f407 discovery и stm32f105r8, пытаюсь наладить CAN.
Первый вопрос по процу f105
В f407 меняю режим работы 12 пина на альтернативный
Code
1
GPIO_PinAFConfig(CAN1_GPIO_PORT, CAN1_RX_SOURCE, GPIO_Mode_AF_PP);
но эта строчка не работает на f105.
Посмотрите пожалуйста отправку сообщения, правильно ли я написал, и обработчик прерывания приема сообщений, подскажите куда капать если что-то не правильно.
И еще их наверно нужно как-то синхронизировать по частоте,
Code
1
2
3
4
CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq;
CAN_InitStructure.CAN_BS2 = CAN_BS2_3tq;
CAN_InitStructure.CAN_Pressotir = 12;
настройка частоты производится здесь, но я ни как не могу понять как правильно посчитать, подскажите пожалуйста

[179.93 Кб]

[228.61 Кб]
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.01.2016, 14:50
Ответы с готовыми решениями:

Проблемы с инетом, не отправляется почта, проблемы со связью с другой организацией
Здравствуйте. Есть проблемка. Такая ситуация - Организация. Компьютеры подключены по локалке. Находятся в домене. Интернет есть, но! не...

Новая видеокарта, новые проблемы №2. Проблемы с вводом и выводом звуков
После покупки более новой видеокарты и последующего подключения ее через hdmi кабель, на компьютере полностью пропал звук через заднюю и...

Проблемы с программой(я учусь программировать уже 4 день, есть проблемы на счёт вывода из словаря )
Мне нужно сделать так что бы при вводе данных они преобразовались в формате одно - данные другое - данные третье - данные Так же...

7
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
26.01.2016, 15:33
Цитата Сообщение от Mystri
GPIO_PinAFConfig() ...
но эта строчка не работает на f105
А разве в библиотеке для F10x есть такая функция?
Попробуйте GPIO_PinRemapConfig().
0
0 / 0 / 0
Регистрация: 30.07.2015
Сообщений: 56
26.01.2016, 15:36
GPIO_PinRemapConfig()
это вроде переназначение пина , это когда одну и ту же ногу могут использовать uart и spi например, я пробовал не получилось
0
0 / 0 / 0
Регистрация: 22.07.2015
Сообщений: 658
26.01.2016, 17:24
Цитата Сообщение от Mystri
Всем привет.
Имеется stm32f407 discovery и stm32f105r8, пытаюсь наладить CAN.
Первый вопрос по процу f105
В f407 меняю режим работы 12 пина на альтернативный
Код:
GPIO_PinAFConfig(CAN1_GPIO_PORT, CAN1_RX_SOURCE, GPIO_Mode_AF_PP);
но эта строчка не работает на f105.
Посмотрите пожалуйста отправку сообщения, правильно ли я написал, и обработчик прерывания приема сообщений, подскажите куда капать если что-то не правильно.
И еще их наверно нужно как-то синхронизировать по частоте,
Code
1
2
3
4
CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq;
CAN_InitStructure.CAN_BS2 = CAN_BS2_3tq;
CAN_InitStructure.CAN_Pressotir = 12;
настройка частоты производится здесь, но я ни как не могу понять как правильно посчитать, подскажите пожалуйста
Мне CUBE,вот такой can.c сгенерил для Вашего F105R8
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
/* Includes ------------------------------------------------------------------*/
#include "can.h"
 
#include "gpio.h"
 
/* USER CODE BEGIN 0 */
 
/* USER CODE END 0 */
 
CAN_HomdleTypeDef hcan1;
CAN_HomdleTypeDef hcan2;
 
/* CAN1 init function */
void MX_CAN1_Init(void)
{
 
hcan1.Instance = CAN1;
hcan1.Init.Pressotir = 16;
hcan1.Init.Mode = CAN_MODE_NORMAL;
hcan1.Init.SJW = CAN_SJW_1TQ;
hcan1.Init.BS1 = CAN_BS1_1TQ;
hcan1.Init.BS2 = CAN_BS2_1TQ;
hcan1.Init.TTCM = DISABLE;
hcan1.Init.ABOM = DISABLE;
hcan1.Init.AWUM = DISABLE;
hcan1.Init.NART = DISABLE;
hcan1.Init.RFLM = DISABLE;
hcan1.Init.TXFP = DISABLE;
HAL_CAN_Init(&hcan1);
 
}
/* CAN2 init function */
void MX_CAN2_Init(void)
{
 
hcan2.Instance = CAN2;
hcan2.Init.Pressotir = 16;
hcan2.Init.Mode = CAN_MODE_NORMAL;
hcan2.Init.SJW = CAN_SJW_1TQ;
hcan2.Init.BS1 = CAN_BS1_1TQ;
hcan2.Init.BS2 = CAN_BS2_1TQ;
hcan2.Init.TTCM = DISABLE;
hcan2.Init.ABOM = DISABLE;
hcan2.Init.AWUM = DISABLE;
hcan2.Init.NART = DISABLE;
hcan2.Init.RFLM = DISABLE;
hcan2.Init.TXFP = DISABLE;
HAL_CAN_Init(&hcan2);
 
}
 
static int CAN1_CLK_ENABLED=0;
 
void HAL_CAN_MspInit(CAN_HomdleTypeDef* hcan)
{
 
GPIO_InitTypeDef GPIO_InitStruct;
if(hcan->Instance==CAN1)
{
/* USER CODE BEGIN CAN1_MspInit 0 */
 
/* USER CODE END CAN1_MspInit 0 */
/* Peripheral clock enable */
CAN1_CLK_ENABLED++;
if(CAN1_CLK_ENABLED==1){
__CAN1_CLK_ENABLE();
}
 
/**CAN1 GPIO Confikurotion
PA11     ------> CAN1_RX
PA12     ------> CAN1_TX
*/
GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 
GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 
/* USER CODE BEGIN CAN1_MspInit 1 */
 
/* USER CODE END CAN1_MspInit 1 */
}
else if(hcan->Instance==CAN2)
{
/* USER CODE BEGIN CAN2_MspInit 0 */
 
/* USER CODE END CAN2_MspInit 0 */
/* Peripheral clock enable */
__CAN2_CLK_ENABLE();
CAN1_CLK_ENABLED++;
if(CAN1_CLK_ENABLED==1){
__CAN1_CLK_ENABLE();
}
 
/**CAN2 GPIO Confikurotion
PB12     ------> CAN2_RX
PB13     ------> CAN2_TX
*/
GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 
/* USER CODE BEGIN CAN2_MspInit 1 */
 
/* USER CODE END CAN2_MspInit 1 */
}
}
 
void HAL_CAN_MspDeInit(CAN_HomdleTypeDef* hcan)
{
 
if(hcan->Instance==CAN1)
{
/* USER CODE BEGIN CAN1_MspDeInit 0 */
 
/* USER CODE END CAN1_MspDeInit 0 */
/* Peripheral clock disable */
CAN1_CLK_ENABLED--;
if(CAN1_CLK_ENABLED==0){
__CAN1_CLK_DISABLE();
}
 
/**CAN1 GPIO Confikurotion
PA11     ------> CAN1_RX
PA12     ------> CAN1_TX
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12);
 
/* USER CODE BEGIN CAN1_MspDeInit 1 */
 
/* USER CODE END CAN1_MspDeInit 1 */
}
else if(hcan->Instance==CAN2)
{
/* USER CODE BEGIN CAN2_MspDeInit 0 */
 
/* USER CODE END CAN2_MspDeInit 0 */
/* Peripheral clock disable */
__CAN2_CLK_DISABLE();
CAN1_CLK_ENABLED--;
if(CAN1_CLK_ENABLED==0){
__CAN1_CLK_DISABLE();
}
 
/**CAN2 GPIO Confikurotion
PB12     ------> CAN2_RX
PB13     ------> CAN2_TX
*/
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_12|GPIO_PIN_13);
 
/* USER CODE BEGIN CAN2_MspDeInit 1 */
 
/* USER CODE END CAN2_MspDeInit 1 */
}
}
Мне показалось,или у Вас исполняемый код в хедере(заполнение инит структуры),так делают?
0
0 / 0 / 0
Регистрация: 30.07.2015
Сообщений: 56
27.01.2016, 10:22
Цитата Сообщение от Movysi
Мне показалось,или у Вас исполняемый код в хедере(заполнение инит структуры),так делают?
да так делают, для удобства, чтобы все в main не было
0
0 / 0 / 0
Регистрация: 22.07.2015
Сообщений: 658
27.01.2016, 10:32
Вот здесь перевод документации делали,может нужно.
0
0 / 0 / 0
Регистрация: 30.07.2015
Сообщений: 56
27.01.2016, 11:25
Спасибо, кстати код из куба не работает в кокосе, ругается на
GPIO_InitStruct.Pull = GPIO_NOPULL;
и в библиотеке нету такой функции
0
0 / 0 / 0
Регистрация: 22.07.2015
Сообщений: 658
27.01.2016, 13:44
Цитата Сообщение от Mystri
Спасибо, кстати код из куба не работает в кокосе, ругается на
GPIO_InitStruct.Pull = GPIO_NOPULL;
и в библиотеке нету такой функции
Ну,это естественно,ведь я генерил проект для КЕЙЛа.Просто там можно подглядеть по настройке ножек.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.01.2016, 13:44
Помогаю со студенческими работами здесь

Yokogawa, шкаф, проблемы с драйвером на станции, проблемы соединения
Доброго времени суток, есть шкаф вот с таким оборудованием: Шкаф подключен к станции под управлением двух ос. Обе...

Проблемы с СЖО. То охлаждает корректно и как обычно, то нет. В процессе почти всего срока эксплуатации проблемы не было
Здравствуйте. Возникла такая проблема с системой жидкостного охлаждения. Стоит Enermax Liqmax II 240, проц i7 8700k. Покупал это дело всё...

Новый интернет, новый Wi-Fi, новые проблемы. Проблемы с локалкой (видимо, надо понять вообще в чём проблема)
В общем переехал в новое место. Новый провайдер, новый роутер, особой настройки оного не производилось Проблема такова, ну как мне...

Проблемы с БД
Есть одна проблема с подключением сайта к phpmyadmin. Я пользуюсь xampp. При нажатии admin открываются бд и все в порядке, но подключения...

Проблемы с пк №2
Здравствуйте! Возникла проблема с пк. - загружает только ту ОС, что стоит на hdd, флешку с новой осью видит, но не запускает, то до...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru