MircoChip学习——CAN通信实现

IDE:MPLAB
编译器:xc8
调试器:PICkit4
芯片:PIC8F28K83

1.创建空项目
在这里插入图片描述
2.安装MCC(官网下载,根据教程安装),安装完之后会有如下的图标
在这里插入图片描述
3.点击MCC,打开代码生成器
4.系统模块配置时钟
在这里插入图片描述
5.找到CAN,双击,则在Project Resource看到如下画面
在这里插入图片描述
6.配置波特率(CAN BUS Speed,这里与CAN收发器的波特率要相等,不然不能建立通信)
在这里插入图片描述
7.点击生成代码按钮,然后再次点击MCC,退出寄存器配置界面
在这里插入图片描述
8.可以看到项目中已经生成了好多文件,包括main.c
在这里插入图片描述
9.自发自收(调用生成的API函数)

void main(void)
{
    
    //dSTANDARD_CAN_MSG_ID_2_0B   标准帧
    //dEXTENDED_CAN_MSG_ID_2_0B   扩展帧
    
    uCAN_MSG canRMsg;
    canRMsg.frame.idType = dSTANDARD_CAN_MSG_ID_2_0B;
    canRMsg.frame.id = 0x124;
    canRMsg.frame.dlc = 8; 
    canRMsg.frame.data0 = 0x00;
    canRMsg.frame.data1 = 0x01;
    canRMsg.frame.data2 = 0x02;
    canRMsg.frame.data3 = 0x01;
    canRMsg.frame.data4 = 0x04;
    canRMsg.frame.data5 = 0x05;
    canRMsg.frame.data6 = 0x06;
    canRMsg.frame.data7 = 0x07;
    
    SYSTEM_Initialize();

    while (1)
    {
        // Add your application code
        if(CAN_receive(&recMsg))
        {
        	CAN_transmit(&canRMsg);
        }
        __delay_ms(1000);
    }
}

附件:

1、函数API描述

函数名称参数返回值描述
ECAN_Initialize()这个例程根据GUI中设置的参数设置所有ECAN“模块寄存器(过滤器、掩码和定时)的值。使ECAN“处于配置模式,然后在初始化ECAN”寄存器后切换到正常模式。
CAN_sleep()该例程在将ECA设置为睡眠模式之前启用来自总线活动的唤醒功能。
CAN_transmit()*tempCanMsg如果消息被加载来传输缓冲区,返回为true,否则返回False。根据优先级查找空的传输缓冲区。将转换后的原始ID、DLC和八个数据字节的值写入相应的寄存器后,设置传输请求状态(TXREQ)位。
CAN_receive()*tempCanMsg如果接收到消息,返回true;否则返回false接收CAN信息
CAN_messagesInBuffer()缓冲区消息总数检查缓冲区中的消息数量
CAN_isBusOff()如果CAN总线关闭则为true,否则为false检查是否打开BUS-Off模式
CAN_isRXErrorPassive()如果模块处于接收错误状态,则返回true。否则返回False。检查模块是否接收错误

2、发送示意图(官网有源文件,可以去官网下载)
在这里插入图片描述
3、接收示意图
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值