CAN总线速度很低求解

2019-07-20 23:00发布

F103和F407通过CAN总线通讯,在UCOSIII中,测试得到的通讯速度才28KByte,不知道是什么问题?求助!

F103 CAN初始化代码
[mw_shl_code=c,true]//CAN初始化,波特率500Kbps
CAN_Mode_Init(CAN_SJW_1tq, CAN_BS2_8tq, CAN_BS1_9tq, 4, 0);
[/mw_shl_code]
F103任务代码
[mw_shl_code=c,true]void can1_tx(void)
{
        OS_ERR err;
        CanTxMsg tx;
        u8 count = 1, i = 0;
        u32 eid;
        CAN_IdTypeDef id;
        id.SourId = CAN_ID;
        id.PrioId = 1;
        id.ArguId = 3;
        id.DestId = 1;
        eid = CAN_ID_Build(&id);
        while (1)
        {
tx.IDE = CAN_Id_Extended;
                tx.ExtId = eid;
                tx.DLC = 8;
                for (i = 0; i < tx.DLC; i++)
                {
                        tx.Data = count;
                        count++;
                }
                tx.RTR = CAN_RTR_Data;
                if (CAN_TxStatus_NoMailBox != CAN_Transmit(CAN1, &tx))
                        OSFlagPost(&RT_FLAG, TX_FLAG, (OS_OPT)OS_OPT_POST_FLAG_SET, &err);
}
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
lison0103
1楼-- · 2019-07-21 00:19
你这个28K BYTE是指28K 字节的数据吗?
如果是的话,差不多是这个速度了
500K/125*8=32K
gogoedv
2楼-- · 2019-07-21 04:16
 精彩回答 2  元偷偷看……
gogoedv
3楼-- · 2019-07-21 04:44
本帖最后由 gogoedv 于 2016-4-8 16:46 编辑

UCOS系统里没有什么其他高级任务影响CAN通讯任务。CAN节点通讯距离40cm。
xuande
4楼-- · 2019-07-21 08:03

发送方太懒?


gogoedv
5楼-- · 2019-07-21 09:23
 精彩回答 2  元偷偷看……
gogoedv
6楼-- · 2019-07-21 11:14
接收方F407无系统代码
[mw_shl_code=c,true]#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "can.h"

int main(void)
{
        u32 temp;
        u8 key;
        u32 cnt=0;
        u8 canbuf[8];
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
        delay_init(168);    //初始化延时函数
        uart_init(115200);        //初始化串口波特率为115200
        LED_Init();                                        //初始化LED
         LCD_Init();                                        //LCD初始化
        CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,0);//CAN初始化环回模式,波特率500Kbps   
         POINT_COLOR=RED;//设置字体为红 {MOD}
        LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");        
        LCD_ShowString(30,70,200,16,16,"CAN TEST");        
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2014/5/7");
        LCD_ShowString(30,130,200,16,16,"LoopBack Mode");         
        LCD_ShowString(30,150,200,16,16,"KEY0:Send WK_UP:Mode");//显示提示信息               
        POINT_COLOR=BLUE;//设置字体为蓝 {MOD}           
        LCD_ShowString(30,170,200,16,16,"Count:");                          //显示当前计数值        
        LCD_ShowString(30,190,200,16,16,"Send Data:");                //提示发送的数据        
        LCD_ShowString(30,250,200,16,16,"Receive Data:");        //提示接收到的数据               
                                                         
        while(1)
        {
                key=CAN1_Receive_Msg(canbuf);
                if(key)//接收到有数据
                {                        
                        cnt = cnt + key;
                }
                if(cnt >=   1024 * 1024)
                {
                        LCD_ShowString(30,270,200,16,16,"New One MByte");        //提示接收到的数据
                        delay_ms(10000);
                }
        }
        
}
[/mw_shl_code]

一周热门 更多>