littlebot
Published on 2025-04-13 / 1 Visits
0

【源码】基于MPLAB Code Configurator的PIC18Q84 CAN FD通信系统

项目简介

本项目展示了如何使用MPLAB® Code Configurator (MCC) Melody在PIC18 - Q84系列设备上设置和使用新的CAN FD(Controller Area Network Flexible Data - Rate)模块。该软件可加速波特率、接收掩码/过滤器以及接收/发送FIFO缓冲区等设置的配置过程。项目具备周期性发送CAN帧、回显特定消息ID的消息以及根据特定消息ID的数据设置LED等功能。

项目的主要特性和功能

  1. 周期性发送:每隔1秒周期性地发送ID为0x100、数据为0x0011223344556677的CAN帧。
  2. 消息回显:当接收到消息ID为0x111的消息时,会以消息ID 0x222回显相同的数据帧。
  3. LED控制:根据接收到的消息ID为0x585的消息的最低有效位来控制板载LED的开关。

安装使用步骤

前提条件

确保已安装相关软件。

硬件连接

使用 ATA6563 Click board 硬件,按照文档中的硬件设置说明进行连接。

项目配置

  1. 在MPLAB X中创建一个新的独立项目,选择PIC18F57Q84作为微控制器。
  2. 点击 MCC 按钮,若未安装MCC,先按照 此指南 进行安装。
  3. 点击 "Select MCC Melody" 并完成设置。
  4. 配置模块:
    • 配置 "Clock Control" 模块,使用外部10 MHz晶体振荡器和内部PLL,使工作频率达到40 MHz。
    • 在 "Configuration Bits" 模块中,更改外部振荡器选择设置并禁用JTAG。
    • 添加CAN FD模块,进行时钟设置、位速率设置、一般设置、FIFO设置和过滤器对象设置。
    • 添加TMR0模块,配置为每1秒生成一次中断。
    • 使用 Pin Grid View 选项卡配置引脚,将PORTB0设置为CANTX,PORTB3设置为CANRX,PORTF3设置为输出以控制板载LED。
  5. 点击 Generate 按钮生成应用程序代码。

中断代码实现

  1. 创建 canfd_interrupts.c 文件,实现三个中断处理函数:CAN1_FIFO1CustomHandlerCAN1_FIFO2CustomHandlerTimer0_CustomHandler
  2. 创建 canfd_interrupts.h 文件,包含上述函数的原型。
  3. main.c 文件的主函数中添加以下代码: ```c

include "mcc_generated_files/system/system.h"

include "canfd_interrupts.h"

int main(void) { SYSTEM_Initialize();

// Enable the Global High Interrupts 
INTERRUPT_GlobalInterruptHighEnable();

// Enable the Global Low Interrupts 
INTERRUPT_GlobalInterruptLowEnable();

Timer0_OverflowCallbackRegister(Timer0_CustomHandler);

CAN1_FIFO1NotEmptyCallbackRegister(CAN1_FIFO1CustomHandler);
CAN1_FIFO2NotEmptyCallbackRegister(CAN1_FIFO2CustomHandler);

while(1)
{
}

} ```

编译和烧录

完成上述步骤后,进行项目的编译和烧录操作。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】