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

 
 
> 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

Сообщений в этой теме
- 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
- - aneox   Все тесты проводил с подключением к шине авто. Ног...   Feb 11 2015, 04:19
- - 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 - 04:59
Рейтинг@Mail.ru


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