﻿================================================================================
                                样例使用说明
================================================================================
Date            Author      IAR       MDK       GCC
2023-05-31      CDT         7.70      5.36      gcc-arm-none-eabi-10.3-2021.10-win32

================================================================================
平台说明
================================================================================
GCC工程，由Eclipse IDE外挂GNU-ARM Toolchain，再结合pyOCD GDB Server实现工程的编译、
链接和调试。在用Eclipse导入工程后，请将xxxx_PyOCDDebug中pyocd-gdbserver和SVD文件
设置为正确的路径；请将xxxx_PyOCDDownload中pyocd设置为正确的路径。注意，这些路径不
能包含非英文字符。

================================================================================
功能描述
================================================================================
本例程展示了MCAN 经典CAN通信的波特率配置、接收过滤器、数据帧接收、数据帧发送以及中断
的基本实现方式。

1. 波特率设置
   1）CAN模式为经典CAN模式；
   2）系统时钟200MHz；
   3）CAN通信时钟为系统时钟的5分频，即40MHz；
   4）CAN位时间分频为通信时钟的2分频，即20MHz；
   5）CAN通信波特率为1Mbps，位时间为20TQ，采样点为80%；

2. 接收过滤器配置
    -------------------------------------------------------
    |     ID       |  ID类型  |           接收            |
    -------------------------------------------------------
    | 0x110~0x11F  |  标准ID  |         Rx FIFO0          |
    -------------------------------------------------------
    | 0x130        |  标准ID  |         Rx Buffer0        |
    -------------------------------------------------------
    | 0x131        |  标准ID  |         Rx Buffer1        |
    -------------------------------------------------------
    | 0x132        |  标准ID  |         Rx Buffer2        |
    -------------------------------------------------------
    | 0x12345110 ~ |          |                           |
    | 0x1234511F   |  扩展ID  |         Rx FIFO1          |
    -------------------------------------------------------
    | 0x12345130   |  扩展ID  |         Rx Buffer3        |
    -------------------------------------------------------
    | 0x12345131   |  扩展ID  |         Rx Buffer4        |
    -------------------------------------------------------
    | 0x12345132   |  扩展ID  |         Rx Buffer5        |
    -------------------------------------------------------

================================================================================
测试环境
================================================================================
测试用板:
---------------------
EV_A448_LQ80_Rev1.0

辅助工具:
---------------------
CAN设备，跳线帽

辅助软件:
---------------------
串口调试助手软件（115200bps，8N1）
CAN设备配套软件

================================================================================
使用步骤
================================================================================
1）用 MicroUSB数据线通过 DAP 调试接口，将开发板与上位机相连（可以直接通过串口调试助
   手查看程序运行情况）；
2）将开发板的CAN1（J2 DB9）、与CAN设备通过CAN总线连接，将总线阻抗匹配为60Ω（用跳线帽
   短接CAN1接口附近的JP3的两个引脚，可使用CAN1板载的120Ω终端电阻），并配置CAN设备的
   波特率和采样点，与例程的配置相同；
3）打开工程，重新编译，启动调试或直接下载程序运行；
4）CAN设备会收到开发板发出的两帧数据帧，ID分别为标准ID 0x777和扩展ID 0x17777777，
   数据长度都为8字节；
5）用CAN设备向开发板发送数据帧，ID如“接收过滤器配置”所示，数据长度最大8字节。
   开发板收到后，将ID的bit11~bit8改为3、数据首字节为1个8位的计数器、其他数据不变，
   形成新的数据帧，并发送出来。
   如收到ID为 0x110 的帧，将发出ID为 0x310 的帧；
   如收到ID为 0x12345110 的帧，将发出ID为 0x12345310 的帧。
   其中，Rx FIFO0、Rx Buffer0~5接收一帧发送一帧；Rx FIFO1要在接收满10帧之后才会读出
   所有数据帧并同时发送出来。

================================================================================
注意
================================================================================
1. CAN控制逻辑时钟（PCLK1）频率不能低于CAN通信时钟频率。
2. 如果在调试时开启了IDE（MDK或IAR）的Memory窗口读取Message RAM，在下一次启动调试时，由于
   Message RAM未解锁使调试器无法读取而不能进入调试状态。解决方法如下：
   1）用JLink调试；
   2）创建一个文件：xxxx.JLinkScript，文件内容如下：
void AfterResetTarget()
{
    MEM_WriteU32(0xC3FE+0x40048000, 0xA5FF);
    MEM_WriteU32(0x0004+0x40048000, 0xFFFC);
}
   2a. 使用MDK调试时，将该文件放在工程文件同级目录，并重命名为JLinkSettings.JLinkScript；
   2b. 使用IAR调试时，将该文件放在\EWARM\settings 目录下，并重命名为：
      <project_name>_Debug.JLinkScript或<project_name>_Release.JLinkScript。
      如 mcan_loopback_Debug.JLinkScript
   2c. 使用GCC时，不需以上操作，确保在MCAN初始化完成后，再操作Memory窗口即可。

================================================================================
