STM32/STM8技术论坛
直播中

赵阳

7年用户 220经验值
私信 关注
[问答]

STM32F334R8的CAN测试实现不了数据的发送

STM32F334R8这块芯片的资源好少,我又是个新手需要测试自带的CAN模块,手里只有一块NUCLEO-F334R8的开发板以及一根mini USB程序下载线。在网上也找了很多,利用STM32F3xx_HAL_Driver库中的CAN驱动参考配置,还是实现不了数据的发送,因为只有一块板子,用的是环回测试模式,不知道有没有做过的,谁能提供点帮助,谢谢了

回帖(8)

赵阳

2018-11-6 09:02:00
利用查询模式进行CAN的环回模式已经完成,给需要的朋友参考下
int main(void)
{
        static GPIO_InitTypeDef  GPIO_InitStruct;
        static CAN_HandleTypeDef CAN_HandleStruct;
        static CAN_FilterConfTypeDef CAN_FilterConfStruct;
        static CanTxMsgTypeDef CanTxMsgStruct;
        static CanRxMsgTypeDef CanRxMsgStruct;
       
        typedef unsigned          char u8;
        typedef unsigned short     int u16;
        typedef unsigned           int u32;
        typedef unsigned       __int64 u64;
       
        u8 Txbuf[8];
        u8 Rxbuf[8];
        u8 i;
        u8 cnt = 0;
HAL_Init();
SystemClock_Config();
__HAL_RCC_CAN1_CLK_ENABLE();
        __HAL_RCC_GPIOA_CLK_ENABLE();
       
        GPIO_InitStruct.Alternate = GPIO_AF9_CAN;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
        GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12;
        GPIO_InitStruct.Pull = GPIO_PULLUP;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
        HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
       
        CAN_HandleStruct.Init.ABOM = DISABLE;
        CAN_HandleStruct.Init.AWUM = DISABLE;
        CAN_HandleStruct.Init.BS1 = CAN_BS1_7TQ;
        CAN_HandleStruct.Init.BS2 = CAN_BS2_6TQ;
        CAN_HandleStruct.Init.Mode = CAN_MODE_LOOPBACK;
        CAN_HandleStruct.Init.NART = ENABLE;
        CAN_HandleStruct.Init.Prescaler = 6;
        CAN_HandleStruct.Init.RFLM = DISABLE;
        CAN_HandleStruct.Init.SJW = DISABLE;
        CAN_HandleStruct.Init.TTCM = DISABLE;
        CAN_HandleStruct.Init.TXFP = DISABLE;
       
        CAN_HandleStruct.Instance = CAN;
        CAN_HandleStruct.Lock = HAL_UNLOCKED;
        CAN_HandleStruct.pRxMsg = &CanRxMsgStruct;
        CAN_HandleStruct.pTxMsg = &CanTxMsgStruct;
        HAL_CAN_Init(&CAN_HandleStruct);

        CAN_FilterConfStruct.BankNumber = 0;
        CAN_FilterConfStruct.FilterActivation = ENABLE;
        CAN_FilterConfStruct.FilterFIFOAssignment = CAN_FILTER_FIFO0;
        CAN_FilterConfStruct.FilterIdHigh = 0x0000;
        CAN_FilterConfStruct.FilterIdLow = 0x0000;
        CAN_FilterConfStruct.FilterMaskIdHigh = 0x0000;
        CAN_FilterConfStruct.FilterMaskIdLow = 0x0000;
        CAN_FilterConfStruct.FilterMode = CAN_FILTERMODE_IDMASK;
        CAN_FilterConfStruct.FilterNumber = 0;
        CAN_FilterConfStruct.FilterScale = CAN_FILTERSCALE_32BIT;
       
        HAL_CAN_ConfigFilter(&CAN_HandleStruct, &CAN_FilterConfStruct);
while(1)
        {
                for(i=0;i<=8;i++)
                        {
                                Txbuf=cnt+i;
                        }

                CanTxMsgStruct.DLC = 8;
                CanTxMsgStruct.ExtId = 0x12;
                CanTxMsgStruct.IDE = 0;
                CanTxMsgStruct.RTR = 0;
                CanTxMsgStruct.StdId = 0x12;
                for(i=0;i<8;i++)
                        CanTxMsgStruct.Data=Txbuf;
                HAL_CAN_Transmit(&CAN_HandleStruct,0);
               

                HAL_CAN_Receive(&CAN_HandleStruct,CAN_FIFO0, 1000);
                for(i=0;i                         Rxbuf = CanRxMsgStruct.Data;               
                        if(CanRxMsgStruct.DLC)
                                {
                                for(i=0;i<=8;i++)
                                        {
                                                printf("%dt", Rxbuf);
                                        }
                                }
                HAL_Delay(1000);       
        }

}
举报

赵阳

2018-11-6 09:21:59
程序好大,20160929_Test_CAN20160929_Test_CANProjectsSTM32F334R8-NucleoTemplatesMDK-ARM
举报

赵阳

2018-11-6 09:28:33
引用: ke5627712 发表于 2018-11-6 16:37
程序好大,20160929_Test_CAN20160929_Test_CANProjectsSTM32F334R8-NucleoTemplatesMDK-ARM

没传上去
举报

孙婷婷

2018-11-6 09:36:44
can基本一样,如果收不到,说明配置的问题。也可以用STM32CubeMX生成测试工程。
举报

赵阳

2018-11-6 09:41:58
post_deleted
举报

赵阳

2018-11-6 09:58:23

非常感谢!
举报

华农武

2018-11-6 10:05:43
引用: TOPCB 发表于 2018-11-6 16:52
can基本一样,如果收不到,说明配置的问题。也可以用STM32CubeMX生成测试工程。

谢谢您的回复
举报

陈强

2018-11-6 10:20:05
CUBE 很方便的
举报

更多回帖

×
20
完善资料,
赚取积分