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

 
 
> stm32f103 can шина, помогите сил нет
aneox
сообщение Feb 10 2015, 17:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 10-02-15
Пользователь №: 85 066



прошу помощи
stm32f103 + mcp2551 подключены к автомобильной кан шине, пакеты получаю успешно в прерывании, а вот отправка ни в какую не работает, ножка PA12(CANTX) молчит, в верхем положении.

Инициализация
CODE
void CAN1_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
CAN_InitTypeDef CAN_InitStructure;
CAN_FilterInitTypeDef CAN_FilterInitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);



RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );

//CAN_RX
GPIO_InitStructure.GPIO_Pin = GPIO_PinSource11; //PA11
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);

//CAN_TX
GPIO_InitStructure.GPIO_Pin = GPIO_PinSource12; //PA12
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);


RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
CAN_DeInit(CAN1);

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;

//расчет на 500кб
CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq;
CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq;
CAN_InitStructure.CAN_Prescaler = 12;
CAN_Init(CAN1, &CAN_InitStructure);

CAN_FilterInitStructure.CAN_FilterNumber = 0;
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000;
CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment = CAN_FIFO0;
CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
CAN_FilterInit(&CAN_FilterInitStructure);


TxMessage.StdId = 0x321;
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.IDE = CAN_ID_STD;
TxMessage.DLC = 8;

CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
}


Отправка
Код
        TxMessage.StdId=PID_REQUEST;
        TxMessage.RTR = CAN_RTR_DATA;
        TxMessage.IDE = CAN_ID_STD;
        TxMessage.DLC = 8;
        TxMessage.Data[0] = 0x02;
        TxMessage.Data[1] = 0x01;
        TxMessage.Data[2] = ENGINE_COOLANT_TEMP;
        TxMessage.Data[3] = 0x00;
        TxMessage.Data[4] = 0x00;
        TxMessage.Data[5] = 0x00;
        TxMessage.Data[6] = 0x00;
        TxMessage.Data[7] = 0x00;

        do
        {
            transmit_mailbox = CAN_Transmit( CAN1, &TxMessage );
        }
        while( transmit_mailbox =! CAN_NO_MB );

        txStat1 = CAN_TransmitStatus(CAN1, 0); //0x02 CAN_TxStatus_Pending
        txStat2 = CAN_TransmitStatus(CAN1, 1); //0x02 CAN_TxStatus_Pending
        txStat3 = CAN_TransmitStatus(CAN1, 2); //0x02 CAN_TxStatus_Pending

        if (txStat1 == CANTXOK || txStat2 == CANTXOK || txStat3 == CANTXOK)
            ok = 1;


Заполняет все мэил боксы и так и стоит. В режиме Loopback отправка работает, получаю свое же сообщение, но нога не дрыгается. В режиме нормал работает только получение пакетов с кан шины авто. Уже сил моих нет.

Сообщение отредактировал IgorKossak - Feb 10 2015, 18:48
Причина редактирования: [codebox] для длинного кода, [code] - для короткого
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aneox
сообщение Feb 11 2015, 04:19
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 10-02-15
Пользователь №: 85 066



Все тесты проводил с подключением к шине авто. Ноги смотрю лог анализатором на базе ардуины. На canrx отчетливо вижу импульсы. На счет того что авто не отдает ack подтверждение тоже думал. Но если всетаки пакет ушел, то должен придти ответ с данными, а его нет. Ноги никто больше не занимает. Беда прям какаято.

Если бы были проблемы с шиной, getLastErrorCode давал бы 0x50 bitDominantError. Это я наблюдал в начале, потом выпаял все подтяжки на плате, там был распаян юсб, сейчас все проверено и getLastErrorCode говорит noError

Сообщение отредактировал aneox - Feb 11 2015, 04:09
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- aneox   stm32f103 can шина   Feb 10 2015, 17:50
- - A. Fig Lee   А почему: КодGPIO_Mode_Out_PP для ТХ? Разве не аль...   Feb 10 2015, 18:43
- - aneox   Все верно, должно быть af, это я уже от безисходно...   Feb 10 2015, 19:20
|- - A. Fig Lee   Цитата(aneox @ Feb 10 2015, 14:20) Все ве...   Feb 10 2015, 19:23
- - aneox   ноги правильные, ремап на pb8-9 пробовал, тоже сам...   Feb 10 2015, 19:24
|- - AHTOXA   Тактирование AFIO включили?   Feb 10 2015, 19:39
|- - aneox   Цитата(AHTOXA @ Feb 10 2015, 20:39) Такти...   Feb 11 2015, 05:35
- - aneox   Ну когда ремап делал, включал, сейчас нет   Feb 10 2015, 19:46
- - Golikov A.   как контролируете что нет передачи? осциллографом ...   Feb 10 2015, 20:39
- - qwqw   Когда успешно принимаете пакет, ACK от вас тоже не...   Feb 11 2015, 07:08
|- - aneox   Цитата(qwqw @ Feb 11 2015, 08:08) Когда у...   Feb 11 2015, 07:40
- - qwqw   3.3В импульса должно хватать для MCP2551. <0.8В...   Feb 11 2015, 07:49
- - aneox   на сколько я знаю в режиме лупбак наружу тх ногой ...   Feb 11 2015, 08:24
- - qwqw   А что за плата? Может проблема с питанием, и пери...   Feb 11 2015, 09:35
- - aneox   вру я, вру GPIO_Pin_12 и GPIO_PinSource12 оказывае...   Feb 11 2015, 10:02
- - Nimnul22   aneox дайте пожалуйста ваш Skype или Mail, личное ...   Feb 15 2015, 19:28


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

 


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


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