From 9120bd0ec1758cfaf03a5ef3ea24c437a3c6f36d Mon Sep 17 00:00:00 2001 From: shenlefengnai-rgb Date: Sat, 3 Oct 2026 17:44:55 +0800 Subject: [PATCH] Set CAN1 to 500K and CAN2 to 250K with matching DBCs and PDF --- AMI.dbc | 7 +- AMI_CAN2_250k.dbc | 135 ++++++++++++++++++ README.md | 12 +- docs/AMI_CAN_DBC说明.md | 17 ++- docs/SDC_BMS协议.md | 4 +- docs/SDC_BMS联调报告.md | 4 +- .../2026-10-03/can-bitrate-validation.json | 37 +++++ docs/验证说明.txt | 8 +- firmware/AMI_Controller.ioc | 10 +- firmware/Core/Src/fdcan.c | 4 +- firmware/README.md | 10 +- output/firmware/AMI_Controller.bin | Bin 15612 -> 15612 bytes output/firmware/AMI_Controller_v2.0_500k.bin | Bin 0 -> 15612 bytes output/pdf/AMI_CAN报文说明.pdf | Bin 96078 -> 99972 bytes scripts/export_can_pdf.py | 7 +- scripts/export_dbc_docs.py | 40 +++++- scripts/verify_dbc.py | 54 +++++++ 17 files changed, 316 insertions(+), 33 deletions(-) create mode 100644 AMI_CAN2_250k.dbc create mode 100644 docs/evidence/2026-10-03/can-bitrate-validation.json create mode 100644 output/firmware/AMI_Controller_v2.0_500k.bin diff --git a/AMI.dbc b/AMI.dbc index 74cd7f5..1672912 100644 --- a/AMI.dbc +++ b/AMI.dbc @@ -1,4 +1,4 @@ -VERSION "AMI-2.0-2026-10-03" +VERSION "AMI-2.1-2026-10-03" NS_ : NS_DESC_ @@ -65,7 +65,7 @@ BO_ 2556444915 BMS_Status_Extended: 8 BMS BO_ 2556510451 BMS_Extremes_Extended: 8 BMS SG_ Maximum_Cell_Temperature : 39|8@0+ (1,-40) [-40|215] "degC" AMI -CM_ "AMI CAN interface v2.0. Classic CAN at 500000 bit/s. CAN1 and CAN2 use identical IDs and parsing. SDC fields follow SDC_ACQ_DAC.dbc VERSION 1.1. BMS consumed fields follow BmsMonitor-CANTest commit e65c95203d1689df05343775982d7e85bd782646. Omitted bytes/signals are not interpreted by the AMI firmware. No motor temperature, calibrated vehicle speed, torque, task execution feedback or AMI heartbeat frame is defined."; +CM_ "AMI CAN interface v2.1. CAN1: 500000 bit/s; CAN2: 250000 bit/s. Both use Classic CAN, identical IDs, parsing and task request capability. This file is CAN1; use AMI_CAN2_250k.dbc for CAN2. Frames are not bridged between buses. SDC fields follow SDC_ACQ_DAC.dbc VERSION 1.1. BMS consumed fields follow BmsMonitor-CANTest commit e65c95203d1689df05343775982d7e85bd782646. Omitted bytes/signals are not interpreted by the AMI firmware. No motor temperature, calibrated vehicle speed, torque, task execution feedback or AMI heartbeat frame is defined."; CM_ BU_ AMI "Instrument MCU. UART HMI task confirmation produces AMI_TaskRequest. Display values are received from SDC and BMS."; CM_ BU_ VCU "Logical receiver of task selection requests; execution and safety interlocks are outside this AMI interface."; CM_ BU_ SDC_ACQ_DAC "Source of ADC, capture frequencies and raw PD0-PD14 states; both SDC CAN ports carry the same protocol."; @@ -121,12 +121,15 @@ VAL_ 2556510451 Maximum_Cell_Temperature 255 "Invalid"; BA_DEF_ "BusType" STRING; BA_DEF_ "Baudrate" INT 0 1000000; +BA_DEF_ "AMIPort" STRING; BA_DEF_ BO_ "GenMsgCycleTime" INT 0 2147483647; BA_DEF_DEF_ "BusType" "CAN"; BA_DEF_DEF_ "Baudrate" 500000; +BA_DEF_DEF_ "AMIPort" "CAN1"; BA_DEF_DEF_ "GenMsgCycleTime" 0; BA_ "BusType" "CAN"; BA_ "Baudrate" 500000; +BA_ "AMIPort" "CAN1"; BA_ "GenMsgCycleTime" BO_ 1696 100; BA_ "GenMsgCycleTime" BO_ 1697 500; BA_ "GenMsgCycleTime" BO_ 1698 20; diff --git a/AMI_CAN2_250k.dbc b/AMI_CAN2_250k.dbc new file mode 100644 index 0000000..4c8ce33 --- /dev/null +++ b/AMI_CAN2_250k.dbc @@ -0,0 +1,135 @@ +VERSION "AMI-2.1-2026-10-03" + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + BA_DEF_DEF_ + +BS_: + +BU_: AMI VCU SDC_ACQ_DAC BMS + +BO_ 768 AMI_TaskRequest: 8 AMI + SG_ Protocol_Version : 0|8@1+ (1,0) [1|1] "" VCU + SG_ Task_ID : 8|8@1+ (1,0) [1|6] "" VCU + SG_ Request_Sequence : 16|8@1+ (1,0) [0|255] "" VCU + SG_ Request_Source : 24|8@1+ (1,0) [1|1] "" VCU + SG_ MCU_Uptime : 32|32@1+ (1,0) [0|4294967295] "ms" VCU + +BO_ 1696 SDC_Heartbeat: 8 SDC_ACQ_DAC + SG_ Board_Identifier : 0|8@1+ (1,0) [0|255] "" AMI + SG_ Protocol_Version : 8|8@1+ (1,0) [0|255] "" AMI + SG_ Heartbeat_Sequence : 16|16@1+ (1,0) [0|65535] "" AMI + SG_ Uptime : 32|32@1+ (0.001,0) [0|4294967.295] "s" AMI + +BO_ 1697 SDC_ADC_InputVoltage: 2 SDC_ACQ_DAC + SG_ Input_Voltage : 0|16@1+ (0.001,0) [0|65.535] "V" AMI + +BO_ 1698 SDC_InputFrequencies: 8 SDC_ACQ_DAC + SG_ Frequency_LeftFront_PA0 : 0|16@1+ (1,0) [0|65535] "Hz" AMI + SG_ Frequency_PA2 : 16|16@1+ (1,0) [0|65535] "Hz" AMI + SG_ Frequency_RightFront_PA6 : 32|16@1+ (1,0) [0|65535] "Hz" AMI + SG_ Frequency_PB14 : 48|16@1+ (1,0) [0|65535] "Hz" AMI + +BO_ 1700 SDC_DAC_Ack: 4 SDC_ACQ_DAC + SG_ DAC_Set_Result : 0|8@1+ (1,0) [0|1] "" AMI + SG_ DAC_Select : 8|8@1+ (1,0) [1|2] "" AMI + SG_ DAC_Output_Voltage : 16|16@1+ (0.001,0) [0|5] "V" AMI + +BO_ 1702 SDC_GPIO_Status: 8 SDC_ACQ_DAC + SG_ SDC_Input_State : 0|15@1+ (1,0) [0|32767] "" AMI + SG_ SDC_Changed_Mask : 16|15@1+ (1,0) [0|32767] "" AMI + SG_ Timestamp : 32|32@1+ (0.001,0) [0|4294967.295] "s" AMI + +BO_ 320 BMS_Status: 8 BMS + SG_ Pack_Voltage : 7|16@0+ (0.1,0) [0|6553.5] "V" AMI + SG_ Pack_Current : 23|16@0+ (0.1,-500) [-500|6053.5] "A" AMI + +BO_ 342 BMS_Temperatures: 8 BMS + SG_ Temperature_1 : 7|8@0+ (1,-40) [-40|215] "degC" AMI + SG_ Temperature_2 : 15|8@0+ (1,-40) [-40|215] "degC" AMI + SG_ Temperature_3 : 23|8@0+ (1,-40) [-40|215] "degC" AMI + SG_ Temperature_4 : 31|8@0+ (1,-40) [-40|215] "degC" AMI + SG_ Temperature_5 : 39|8@0+ (1,-40) [-40|215] "degC" AMI + SG_ Temperature_6 : 47|8@0+ (1,-40) [-40|215] "degC" AMI + SG_ Temperature_7 : 55|8@0+ (1,-40) [-40|215] "degC" AMI + SG_ Temperature_8 : 63|8@0+ (1,-40) [-40|215] "degC" AMI + +BO_ 2556444915 BMS_Status_Extended: 8 BMS + SG_ Pack_Voltage : 7|16@0+ (0.1,0) [0|6553.5] "V" AMI + SG_ Pack_Current : 23|16@0+ (0.1,-500) [-500|6053.5] "A" AMI + +BO_ 2556510451 BMS_Extremes_Extended: 8 BMS + SG_ Maximum_Cell_Temperature : 39|8@0+ (1,-40) [-40|215] "degC" AMI + +CM_ "AMI CAN interface v2.1. CAN1: 500000 bit/s; CAN2: 250000 bit/s. Both use Classic CAN, identical IDs, parsing and task request capability. This file is CAN2; use AMI.dbc for CAN1. Frames are not bridged between buses. SDC fields follow SDC_ACQ_DAC.dbc VERSION 1.1. BMS consumed fields follow BmsMonitor-CANTest commit e65c95203d1689df05343775982d7e85bd782646. Omitted bytes/signals are not interpreted by the AMI firmware. No motor temperature, calibrated vehicle speed, torque, task execution feedback or AMI heartbeat frame is defined."; +CM_ BU_ AMI "Instrument MCU. UART HMI task confirmation produces AMI_TaskRequest. Display values are received from SDC and BMS."; +CM_ BU_ VCU "Logical receiver of task selection requests; execution and safety interlocks are outside this AMI interface."; +CM_ BU_ SDC_ACQ_DAC "Source of ADC, capture frequencies and raw PD0-PD14 states; both SDC CAN ports carry the same protocol."; +CM_ BU_ BMS "Logical BMS source. Source frame periods are not specified here; do not infer them from test traffic."; + +CM_ BO_ 768 "Standard ID 0x300, DLC 8. Event-driven: one request on valid HMI task confirmation, none on cancel. Counter wraps at 255. Request is not proof of execution and is not SDC ASSI_Lamp_Set (0x6A5). No CAN application-level acknowledgement is defined. Route to ports with valid RX within 500 ms; if none, attempt both."; +CM_ SG_ 768 Protocol_Version "Fixed 1."; +CM_ SG_ 768 Task_ID "Valid task values are 1 through 6."; +CM_ SG_ 768 Request_Sequence "Zero at MCU boot; increments after the request is queued on all target ports, modulo 256."; +CM_ SG_ 768 Request_Source "Fixed 1 = AMI HMI."; +CM_ SG_ 768 MCU_Uptime "Unsigned MCU HAL_GetTick milliseconds, little-endian. Natural uint32 wrap."; + +CM_ BO_ 1696 "Standard ID 0x6A0, DLC 8, 100 ms. AMI accepts board identifier 0xA1 and protocol version 1."; +CM_ BO_ 1697 "Standard ID 0x6A1, DLC exactly 2, 500 ms. Calibrated input voltage before the SDC divider. AMI uses it exclusively as low-voltage battery voltage. Do not apply the divider again."; +CM_ SG_ 1697 Input_Voltage "On-wire uint16 mV, decoded in V. dash.lvbat uses 0.01 V integer display units: (raw_mV + 5) / 10. Source expires after 1500 ms."; +CM_ BO_ 1698 "Standard ID 0x6A2, DLC 8, 20 ms. Preserve Hz; wheel circumference and pulses per revolution are undefined, so AMI does not convert to km/h."; +CM_ BO_ 1700 "Standard ID 0x6A4, DLC 4. Response to a DAC command. AMI recognizes the frame but does not update a display value from it."; +CM_ BO_ 1702 "Standard ID 0x6A6, DLC 8. Sent at startup and on PD0-PD14 changes, not periodically. AMI stores raw state, change mask and timestamp. No mapping to named d0-d15 safety signals or normal polarity is defined."; +CM_ SG_ 1702 SDC_Input_State "Bit n maps directly to PDn for n=0..14. Bits 15 and 31 in the payload are unused."; +CM_ SG_ 1702 SDC_Changed_Mask "Bit n indicates PDn changed since the preceding GPIO status frame."; + +CM_ BO_ 320 "Standard ID 0x140, DLC 8. AMI consumes only bytes 0..3: big-endian unsigned voltage and offset unsigned current. Other payload bytes are outside this DBC subset. Display rounds voltage/current to whole V/A; source expires after 2000 ms."; +CM_ SG_ 320 Pack_Current "Current = raw_uint16 * 0.1 - 500 A; raw 5000 is zero current. This is not a signed int16 field."; +CM_ BO_ 342 "Standard ID 0x156, DLC 8. Eight actual temperature channels. Raw 0xFF is invalid, not 215 degC. AMI takes the maximum of valid channels only; all invalid clears validity. Maximum is derived, not another on-wire signal. Source expires after 2000 ms."; +CM_ SG_ 342 Temperature_1 "Raw byte 0xFF is invalid. Numeric decoders with choices disabled may return 215; check the raw sentinel before aggregation."; +CM_ SG_ 342 Temperature_2 "Raw byte 0xFF is invalid."; +CM_ SG_ 342 Temperature_3 "Raw byte 0xFF is invalid."; +CM_ SG_ 342 Temperature_4 "Raw byte 0xFF is invalid."; +CM_ SG_ 342 Temperature_5 "Raw byte 0xFF is invalid."; +CM_ SG_ 342 Temperature_6 "Raw byte 0xFF is invalid."; +CM_ SG_ 342 Temperature_7 "Raw byte 0xFF is invalid."; +CM_ SG_ 342 Temperature_8 "Raw byte 0xFF is invalid. Synthetic channels 9/10 from the reference UI are not on-wire channels."; +CM_ BO_ 2556444915 "Extended arbitration ID 0x186040F3, DLC 8. Same consumed voltage/current layout as standard 0x140. DBC BO_ numeric ID includes the extended-frame flag 0x80000000."; +CM_ SG_ 2556444915 Pack_Current "Current = raw_uint16 * 0.1 - 500 A."; +CM_ BO_ 2556510451 "Extended arbitration ID 0x186140F3, DLC 8. AMI consumes byte 4 as maximum cell temperature. Raw 0xFF is invalid. Other bytes, including BMS low-voltage bytes 6..7, are not used and cannot override SDC ADC. DBC BO_ numeric ID includes 0x80000000."; + +VAL_ 768 Protocol_Version 1 "Version_1"; +VAL_ 768 Task_ID 1 "Skidpad" 2 "Acceleration" 3 "Autocross" 4 "Inspection_Test" 5 "EBS_Test" 6 "Manual_Driving"; +VAL_ 768 Request_Source 1 "AMI_HMI"; +VAL_ 1696 Board_Identifier 161 "A11_F407"; +VAL_ 1696 Protocol_Version 1 "Version_1"; +VAL_ 1700 DAC_Set_Result 0 "Failed" 1 "OK"; +VAL_ 1700 DAC_Select 1 "DAC1" 2 "DAC2"; +VAL_ 342 Temperature_1 255 "Invalid"; +VAL_ 342 Temperature_2 255 "Invalid"; +VAL_ 342 Temperature_3 255 "Invalid"; +VAL_ 342 Temperature_4 255 "Invalid"; +VAL_ 342 Temperature_5 255 "Invalid"; +VAL_ 342 Temperature_6 255 "Invalid"; +VAL_ 342 Temperature_7 255 "Invalid"; +VAL_ 342 Temperature_8 255 "Invalid"; +VAL_ 2556510451 Maximum_Cell_Temperature 255 "Invalid"; + +BA_DEF_ "BusType" STRING; +BA_DEF_ "Baudrate" INT 0 1000000; +BA_DEF_ "AMIPort" STRING; +BA_DEF_ BO_ "GenMsgCycleTime" INT 0 2147483647; +BA_DEF_DEF_ "BusType" "CAN"; +BA_DEF_DEF_ "Baudrate" 250000; +BA_DEF_DEF_ "AMIPort" "CAN2"; +BA_DEF_DEF_ "GenMsgCycleTime" 0; +BA_ "BusType" "CAN"; +BA_ "Baudrate" 250000; +BA_ "AMIPort" "CAN2"; +BA_ "GenMsgCycleTime" BO_ 1696 100; +BA_ "GenMsgCycleTime" BO_ 1697 500; +BA_ "GenMsgCycleTime" BO_ 1698 20; diff --git a/README.md b/README.md index 1100cb3..e6f27c1 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,19 @@ YMR A11 仪表,使用淘晶驰 TJC4827X543_011 串口屏,分辨率 480 × 272。 -当前 MCU CAN 输入为 **v2.0(SDC DBC / BMS 适配,2026-10-03)**,屏幕沿用 debug 数字状态接口;工程使用 USART HMI 1.68.1.3037 编辑、编译。 +当前 MCU CAN 输入为 **v2.1(CAN1 500 kbit/s、CAN2 250 kbit/s,2026-10-03)**,两路保留相同的 SDC / BMS 解码和任务收发功能;屏幕沿用 debug 数字状态接口。工程使用 USART HMI 1.68.1.3037 编辑、编译。 dash 顶部已加入低压电池电压 `lvbat`(两位小数),来源是 SDC `0x6A1` ADC mV。高压电压、电流来自 BMS `0x140` / 扩展 `0x186040F3`,现有控件显示整数单位;最高单体温度取 `0x156` 的有效实际温度最大值,或扩展 `0x186140F3`。旧 `0x180 / 0x181 / 0x280` 输入不再使用。 ## 工程与交接资料 -- [AMI.dbc](AMI.dbc):当前 AMI CAN 接口,10 条报文、33 个信号,含标准/扩展帧。 +- [CAN1 DBC](AMI.dbc):500 kbit/s,10 条报文、33 个信号,含标准/扩展帧。 +- [CAN2 DBC](AMI_CAN2_250k.dbc):250 kbit/s,报文布局与 CAN1 相同。 - [DBC 对应说明](docs/AMI_CAN_DBC说明.md):信号布局、枚举、字节序、样例与复现检查。 -- [CAN 报文说明 PDF](output/pdf/AMI_CAN报文说明.pdf):当前 v2.0 协议的中文打印版,包含全部 10 条报文。 +- [CAN 报文说明 PDF](output/pdf/AMI_CAN报文说明.pdf):当前 v2.1 协议的中文打印版,包含两路速率和全部 10 条报文。 - [联调报告](docs/SDC_BMS联调报告.md):真实 CAN1 / MCU / COM4 到 HMI 调试器的证据。 -- [已联调固件 BIN](output/firmware/AMI_Controller.bin):STM32G0B1CBT6,配套源码在 firmware。 +- [当前固件 BIN](output/firmware/AMI_Controller.bin):STM32G0B1CBT6,CAN1 500K / CAN2 250K,已编译、尚未烧录;配套源码在 firmware。 +- [此前已联调的 v2.0 BIN](output/firmware/AMI_Controller_v2.0_500k.bin):两路均为 500K,保留历史测试版本。 - [AMI.HMI](AMI.HMI):最新版屏幕工程,打开后编译并下载到对应型号屏幕。 - [通讯交接文档](docs/通讯交接文档.md):可编辑协议说明,包含全部状态编号、任务帧、主页面属性及联调步骤。 - [历史屏幕接口 PDF](docs/AMI仪表通讯交接文档.pdf):保留的 v1.2 屏幕接口资料;当前 CAN 与有效性定义以 DBC 对应说明和 Markdown 交接文档为准。 @@ -52,6 +54,8 @@ dash.lvbat.val=1260 2026-10-03 已验证 CAN 盒 → 实物 AMI CAN1 / MCU → USART2 / COM4 → 官方 HMI 调试器的数据更新、失效与恢复。固件编译及烧录校验通过;物理串口屏和 CAN2 尚未接线实测。旧 C 示例仍是屏幕 debug 接口示例。 +上述实物证据对应 v2.0。v2.1 将 CAN2 改为 250 kbit/s,源码、CubeMX、两份 DBC 与位时序校验及 Release 编译已通过;新 BIN 尚未烧录,CAN2 250K 尚未实测。两路均不转发原始 CAN 帧,CAN 盒需分别设置正确速率。 + 灰色数值表示未知或失效。现有资料缺少电机/逆变器温度协议、Hz 到 km/h 标定参数、SDC PD0..PD14 到具名安全信号的映射,对应显示保持无效/未知。VCU 任务裁决、执行反馈和 EBS 安全输出仍需车辆控制协议,画面 EBS 文案不能作为安全状态证明。 许可证沿用仓库中的 [AGPL-3.0](LICENSE)。 diff --git a/docs/AMI_CAN_DBC说明.md b/docs/AMI_CAN_DBC说明.md index 9cab957..795b605 100644 --- a/docs/AMI_CAN_DBC说明.md +++ b/docs/AMI_CAN_DBC说明.md @@ -1,10 +1,19 @@ # AMI CAN DBC 说明 -版本:`AMI-2.0-2026-10-03`。由 [AMI.dbc](../AMI.dbc) 自动生成,10 条报文、33 个信号。 +版本:`AMI-2.1-2026-10-03`。由 [AMI.dbc](../AMI.dbc) 自动生成,10 条报文、33 个信号。 ## 使用范围 -CAN1 / CAN2 功能相同,均为 500 kbit/s、Classic CAN、87.5% 采样点。节点 AMI 为仪表 MCU,VCU 为任务请求的逻辑接收者,SDC_ACQ_DAC 和 BMS 为数据源。 +CAN1 为 500 kbit/s,CAN2 为 250 kbit/s,均为 Classic CAN、87.5% 采样点。两路保留相同的接收 ID、解码与任务发送功能,MCU 不在两路之间转发原始报文。节点 AMI 为仪表 MCU,VCU 为任务请求的逻辑接收者,SDC_ACQ_DAC 和 BMS 为数据源。 + +| 端口 | 速率 | RX / TX 引脚 | DBC 文件 | +| --- | --- | --- | --- | +| CAN1 | 500 kbit/s | PA11 / PA12 | [AMI.dbc](../AMI.dbc) | +| CAN2 | 250 kbit/s | PB0 / PB1 | [AMI_CAN2_250k.dbc](../AMI_CAN2_250k.dbc) | + +DBC 的 `Baudrate` / `AMIPort` 分别标注所属总线。每份 DBC 均含 10 条报文、33 个信号;同一份报文表适用于两路。CAN 工具必须按接入端口设置速率,导入 DBC 不一定自动改硬件速率。例如 SDC 板保持 500 kbit/s 时接 CAN1;BMS 节点配置为 250 kbit/s 时接 CAN2。 + +FDCAN 时钟 64 MHz,时钟分频为 1;NominalPrescaler 为 CAN1=8、CAN2=16,两路均使用 Sync=1、TimeSeg1=13、TimeSeg2=2、SJW=1。速率 = 64 MHz / Prescaler / (1+13+2);采样点 = (1+13)/16 = 87.5%。 本 DBC 包含 AMI 唯一发送的 `0x300` 任务请求,以及 AMI 当前识别的 SDC / BMS 输入。SDC `0x6A3` DAC 控制、`0x6A5` ASSI 控制、BMS 其他电芯/故障字段不属于此接口子集。没有定义电机温度、逆变器温度、扭矩、标定后的车速、AMI 周期心跳或 VCU 执行反馈。旧 `0x180 / 0x181 / 0x280` 输入已停用。 @@ -184,6 +193,6 @@ python scripts/verify_dbc.py --sdc-dbc ../SDC_ACQ_DAC/SDC_ACQ_DAC.dbc 校验覆盖严格 DBC 解析(长度、信号越界与重叠)、10 个 ID 与固件宏对应、标准/扩展格式、33 个信号、发送/接收节点、SDC 周期、24 个已知报文解码、六个任务号与计数边界编码、大端偏置电流、无效温度枚举、全负温度和截短 DLC。已安装并验证 cantools 44.1.0,接口参考 [cantools 官方文档](https://cantools.readthedocs.io/en/latest/)。 -上述是静态及软件编解码验证。之前 CAN 盒 -> 实物 AMI CAN1 / MCU -> USART2 -> COM4 -> 官方 HMI 调试器的实际更新和六个任务回传见 [联调报告](SDC_BMS联调报告.md)。物理串口屏、CAN2 接线、真实 SDC/BMS 节点和车辆执行动作尚未实测;文档生成和 DBC 解析不替代这些测试。 +上述是静态及软件编解码验证,另校验两份 DBC 的速率、相同信号布局及源码 / CubeMX 位时序一致。v2.1 的 CAN2 250 kbit/s 固件已编译,尚未烧录或实物验证。之前 v2.0 的 CAN 盒 -> 实物 AMI CAN1 / MCU -> USART2 -> COM4 -> 官方 HMI 调试器的实际更新和六个任务回传见 [联调报告](SDC_BMS联调报告.md)。物理串口屏、CAN2 接线、真实 SDC/BMS 节点和车辆执行动作尚未实测;文档生成和 DBC 解析不替代这些测试。 -修改 AMI.dbc 后运行 `python scripts/export_dbc_docs.py` 更新本文;固件字节布局、DBC 与此文档需同时保持一致。 +修改 AMI.dbc 后运行 `python scripts/export_dbc_docs.py` 更新 CAN2 DBC 和本文;固件字节布局、DBC 与此文档需同时保持一致。 diff --git a/docs/SDC_BMS协议.md b/docs/SDC_BMS协议.md index 5ff11e3..a3680d1 100644 --- a/docs/SDC_BMS协议.md +++ b/docs/SDC_BMS协议.md @@ -1,6 +1,8 @@ # AMI 接入 SDC / BMS 协议 -版本 2.0,2026-10-03。CAN1 / CAN2 配置相同:500 kbit/s、Classic CAN、87.5% 采样点。当前固件不再接收旧 `0x180 / 0x181 / 0x280` 数据接口。 +版本 2.1,2026-10-03。CAN1 为 500 kbit/s,CAN2 为 250 kbit/s;两路均为 Classic CAN、87.5% 采样点,接收 ID、解码和任务发送功能相同,不转发原始帧。CAN1 使用 [AMI.dbc](../AMI.dbc),CAN2 使用 [AMI_CAN2_250k.dbc](../AMI_CAN2_250k.dbc)。当前固件不再接收旧 `0x180 / 0x181 / 0x280` 数据接口。 + +v2.1 已通过源码 / CubeMX 位时序一致性检查及 Release 编译,尚未烧录或验证 CAN2 250K。本文后面的实物联调证据属于两路均为 500K 的 v2.0。 来源:`SDC_ACQ_DAC/SDC_ACQ_DAC.dbc` VERSION 1.1;[BmsMonitor-CANTest](https://git.acetaffy.ltd/acetaffy/BmsMonitor-CANTest) 的 `BmsMonitor.App/Protocol/BmsProtocolParser.cs`,核对提交 `e65c95203d1689df05343775982d7e85bd782646`,本机核对副本保存在 `tmp/BmsMonitor-CANTest`(不提交);远端来源使用上述仓库及提交号定位。 diff --git a/docs/SDC_BMS联调报告.md b/docs/SDC_BMS联调报告.md index 2ca0866..d72471d 100644 --- a/docs/SDC_BMS联调报告.md +++ b/docs/SDC_BMS联调报告.md @@ -2,6 +2,8 @@ 2026-10-03,测试链路:PCAN-USB(500 kbit/s)→ 实物 AMI CAN1 → STM32G0B1 MCU → USART2 PA2/PA3 → CH340 COM4(9600 8N1)→ USART HMI 官方调试器。使用 CAN 盒模拟 SDC / BMS 报文,未接真实 SDC / BMS 节点或物理串口屏。 +本文记录 v2.0 的实物测试。后续 v2.1 将 CAN2 改为 250K;新版本尚未烧录,本文不作为 CAN2 250K 验证依据。 + ## 实际发送与显示 | ID / 格式 / DLC | CAN 数据(十六进制) | 含义 | HMI 实测 | @@ -36,7 +38,7 @@ - [当前协议](SDC_BMS协议.md) - [HMI 工程](../AMI.HMI),SHA256 `8A37E4961F90671F04E55BA94C173AE8FBFC5E30C2A3E74A2C37148157C3D16D` -- [固件 BIN](../output/firmware/AMI_Controller.bin),SHA256 `F0DA6EC9C5C8A4F803E4CDD28BB73C6458E010B15F32D3EAEF5C3A1B60D8827B` +- [测试所用 v2.0 固件 BIN](../output/firmware/AMI_Controller_v2.0_500k.bin),SHA256 `F0DA6EC9C5C8A4F803E4CDD28BB73C6458E010B15F32D3EAEF5C3A1B60D8827B` - [全部 CAN 发送记录](evidence/2026-10-03/sdc-bms/sdc_bms_visual_results.json) - [MCU 快照自动核对](evidence/2026-10-03/sdc-bms/sdc_bms_verified.json) - [任务回归](evidence/2026-10-03/sdc-bms/sdc_bms_function_task_results.json) diff --git a/docs/evidence/2026-10-03/can-bitrate-validation.json b/docs/evidence/2026-10-03/can-bitrate-validation.json new file mode 100644 index 0000000..2bc8b13 --- /dev/null +++ b/docs/evidence/2026-10-03/can-bitrate-validation.json @@ -0,0 +1,37 @@ +{ + "result": "passed", + "messages": 10, + "signals": 33, + "known_payload_checks": 24, + "all_task_ids_and_counter_edges": true, + "ports_bitrate": { + "CAN1": 500000, + "CAN2": 250000 + }, + "both_dbc_layouts_and_payloads_match": true, + "firmware_and_ioc_bit_timing_match": true, + "firmware_ids_match": true, + "sdc_source_layout_match": true, + "cantools_version": "44.1.0", + "version": "AMI-2.1-2026-10-03", + "release_build": { + "result": "passed", + "flash_bytes": 15612, + "ram_bytes": 2632 + }, + "hardware_flash": "not performed for v2.1", + "can2_250k_physical_test": "not performed", + "pdf_visual_review": { + "pages": 10, + "result": "passed" + }, + "sha256": { + "AMI.dbc": "4f56ff454563826701a85749f981dc65d6cd74e17b49a62ea030a957a8cf64f5", + "AMI_CAN2_250k.dbc": "fb9aa42f3cb2025e86b1b8227c1318c7dc3edc7a98ea525e57b41e53cce46273", + "firmware/Core/Src/fdcan.c": "3640e809c169a1593249a38e009c0837070a73330cd7af1be236bb7a854e4fdb", + "firmware/AMI_Controller.ioc": "b639e05cec85bed890c45a64bf624098e1b28458c780e7a94e8a42f84f1c7666", + "output/firmware/AMI_Controller.bin": "143bb0cf190a17dd3f8a251bd49fef2af19699d873951c58cb790b35764e3212", + "output/firmware/AMI_Controller_v2.0_500k.bin": "f0da6ec9c5c8a4f803e4cdd28bb73c6458e010b15f32d3eaef5c3a1b60d8827b", + "output/pdf/AMI_CAN报文说明.pdf": "3ba73849d3375ab2248d59038c273c81129c007ab77281c4c80ec1d22eb6bf11" + } +} diff --git a/docs/验证说明.txt b/docs/验证说明.txt index 17efbd9..ee70b18 100644 --- a/docs/验证说明.txt +++ b/docs/验证说明.txt @@ -1,7 +1,9 @@ -2026-10-03:屏幕数字接口1.2,MCU CAN输入2.0(SDC/BMS)。 -AMI.dbc包含10条Classic CAN报文和33个信号,CAN1/CAN2为500 kbit/s。 +2026-10-03:屏幕数字接口1.2,MCU CAN输入2.1(SDC/BMS)。 +CAN1为500 kbit/s,使用AMI.dbc;CAN2为250 kbit/s,使用AMI_CAN2_250k.dbc。每份包含10条Classic CAN报文和33个信号,报文布局相同。 +v2.1源码/CubeMX/DBC位时序一致性校验及Release编译通过;新BIN尚未烧录,CAN2 250K尚未实测。 cantools 44.1.0严格解析、24个已知报文、六个任务号及计数边界、标准/扩展ID、偏置电流、无效温度和SDC布局一致性检查通过;具体复现命令见docs/AMI_CAN_DBC说明.md。 -HMI编译0错误0警告;固件Release编译、SWD烧录校验通过。 +下述历史实物证据对应v2.0,两路均为500K;原BIN保留在output/firmware/AMI_Controller_v2.0_500k.bin。 +HMI编译0错误0警告;v2.0固件Release编译、SWD烧录校验通过。 已实测CAN盒->实物AMI CAN1/MCU->USART2->COM4->官方HMI调试器:低压电压、高压电压/电流、最高有效温度、无效数据、超时/恢复、跨页更新、HMI重连。 六个任务确认均收到正确0x300请求,六个取消均未发送;该测试条件为CAN1持续有有效输入。 证据在docs/evidence/2026-10-03/sdc-bms;联调报告见docs/SDC_BMS联调报告.md。 diff --git a/firmware/AMI_Controller.ioc b/firmware/AMI_Controller.ioc index 77ca83c..561071a 100644 --- a/firmware/AMI_Controller.ioc +++ b/firmware/AMI_Controller.ioc @@ -53,14 +53,14 @@ FDCAN1.NominalTimeSeg2=2 FDCAN1.StdFiltersNbr=3 FDCAN1.ExtFiltersNbr=1 FDCAN2.AutoRetransmission=ENABLE -FDCAN2.CalculateBaudRateNominal=500000 -FDCAN2.CalculateTimeBitNominal=2000 -FDCAN2.CalculateTimeQuantumNominal=125.0 -FDCAN2.DataPrescaler=8 +FDCAN2.CalculateBaudRateNominal=250000 +FDCAN2.CalculateTimeBitNominal=4000 +FDCAN2.CalculateTimeQuantumNominal=250.0 +FDCAN2.DataPrescaler=16 FDCAN2.DataTimeSeg1=13 FDCAN2.DataTimeSeg2=2 FDCAN2.IPParameters=AutoRetransmission,CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,DataPrescaler,DataTimeSeg1,DataTimeSeg2,StdFiltersNbr,NominalPrescaler,NominalTimeSeg1,NominalTimeSeg2,ExtFiltersNbr -FDCAN2.NominalPrescaler=8 +FDCAN2.NominalPrescaler=16 FDCAN2.NominalTimeSeg1=13 FDCAN2.NominalTimeSeg2=2 FDCAN2.StdFiltersNbr=3 diff --git a/firmware/Core/Src/fdcan.c b/firmware/Core/Src/fdcan.c index 981e4a8..ca3fa22 100644 --- a/firmware/Core/Src/fdcan.c +++ b/firmware/Core/Src/fdcan.c @@ -83,11 +83,11 @@ void MX_FDCAN2_Init(void) hfdcan2.Init.AutoRetransmission = ENABLE; hfdcan2.Init.TransmitPause = DISABLE; hfdcan2.Init.ProtocolException = DISABLE; - hfdcan2.Init.NominalPrescaler = 8; + hfdcan2.Init.NominalPrescaler = 16; hfdcan2.Init.NominalSyncJumpWidth = 1; hfdcan2.Init.NominalTimeSeg1 = 13; hfdcan2.Init.NominalTimeSeg2 = 2; - hfdcan2.Init.DataPrescaler = 8; + hfdcan2.Init.DataPrescaler = 16; hfdcan2.Init.DataSyncJumpWidth = 1; hfdcan2.Init.DataTimeSeg1 = 13; hfdcan2.Init.DataTimeSeg2 = 2; diff --git a/firmware/README.md b/firmware/README.md index 4002cfd..e7320f1 100644 --- a/firmware/README.md +++ b/firmware/README.md @@ -10,13 +10,15 @@ | 12 | PA1 | STATUS_LED2,仪表/SDC 状态活动超时提示;两路择有效输入 | | 13 | PA2 | USART2_TX → 屏幕 RX,9600 8N1 | | 14 | PA3 | USART2_RX ← 屏幕 TX,9600 8N1 | -| 19 | PB0 | FDCAN2_RX,500 kbit/s,与 CAN1 功能相同 | -| 20 | PB1 | FDCAN2_TX,500 kbit/s,与 CAN1 功能相同 | +| 19 | PB0 | FDCAN2_RX,250 kbit/s,与 CAN1 解码功能相同 | +| 20 | PB1 | FDCAN2_TX,250 kbit/s,与 CAN1 任务发送功能相同 | | 33 | PA11 | FDCAN1_RX,默认 500 kbit/s | | 34 | PA12 | FDCAN1_TX,默认 500 kbit/s | LED 默认按高电平点亮。如果硬件是低电平点亮,将 `Core/Inc/ami_app.h` 中 `AMI_LED_ACTIVE_LEVEL` 改为 `GPIO_PIN_RESET`。 +CAN1 为 500 kbit/s、CAN2 为 250 kbit/s。FDCAN 时钟为 64 MHz,两路 ClockDivider=1,NominalPrescaler 分别为 8 / 16;TimeSeg1=13、TimeSeg2=2、SJW=1,采样点均为 87.5%。CAN1 使用根目录 `AMI.dbc`,CAN2 使用 `AMI_CAN2_250k.dbc`。MCU 不在两路之间转发原始 CAN 报文。 + ## 数据路径 - FDCAN1、FDCAN2 使用相同的三条标准过滤器和一条扩展过滤器,接收 SDC 0x6A0..0x6A6 与 BMS 0x140 / 0x156 / 0x186040F3 / 0x186140F3。 @@ -50,7 +52,9 @@ CubeMX 配置源为 `AMI_Controller.ioc`。重新生成时保留 USER CODE 区 ## 实物联调前确认 1. 核对芯片完整丝印,确认是 CB/CC/CE 中的哪一个。 -2. 确认 CAN1/CAN2 收发器、终端电阻及 500 kbit/s 总线速率。 +2. 确认 CAN1/CAN2 收发器、终端电阻;CAN1 总线 500 kbit/s、CAN2 总线 250 kbit/s。 3. 确认屏幕是 TTL 电平并与主控共地,主控 TX 接屏 RX、主控 RX 接屏 TX。 4. 下载 `AMI.HMI` 后逐条验证仪表数值、16 路 debug 状态及 6 个任务按钮。 5. 2026-10-03 已完成 CAN1 / MCU / USART2 到 COM4 官方 HMI 调试器联调;物理屏幕、CAN2 和 LED 极性尚未实测。证据位于 [发布的 CAN 记录](../docs/evidence/2026-10-03/sdc-bms/sdc_bms_visual_results.json)。 + +此前实物证据对应两路均为 500K 的 v2.0。当前 v2.1 的 CAN2 250K BIN 已编译,尚未烧录或实物测试。 diff --git a/output/firmware/AMI_Controller.bin b/output/firmware/AMI_Controller.bin index da0a501b02bc1b424f7e4c79ed4db86d0f00a05e..fcb2632c97dd301afe29d696514fa78453b449c2 100644 GIT binary patch delta 14 VcmexU`KNM&pDv@oW`Eta`~Wu=1`+@O delta 16 XcmexU`KNM&pYCKPU7gKUx=s85Mz03% diff --git a/output/firmware/AMI_Controller_v2.0_500k.bin b/output/firmware/AMI_Controller_v2.0_500k.bin new file mode 100644 index 0000000000000000000000000000000000000000..da0a501b02bc1b424f7e4c79ed4db86d0f00a05e GIT binary patch literal 15612 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%0Dp_>6IvwLN{;gk82r?7>9*4b&YHy60FTYL@t& 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 F{{;qfts4LU literal 0 HcmV?d00001 diff --git a/output/pdf/AMI_CAN报文说明.pdf b/output/pdf/AMI_CAN报文说明.pdf index 9ca93e530eee3902ef65b22f3d03351061a13ace..2597dd7a560aec337fbab2522cd0cb8cf8f4812b 100644 GIT binary patch literal 99972 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

BckdCP}h=U9rmIu)9zw zmF;@UX+|uoz%y&At|$q)PLh~h>gqVrfr!OW!4ATN zm&x?TB8trob>LJ{FV1>EDOu5O!_HFrwk=%yf2e$+vN~2M-m~+~B>?Ve0zXlonQeU6 z0NQz-wn=!Lww6LovxO#IXbDP_A!n2oCXUs+4rH7}E0U>Koa0eK&co@Z!QZcHl?vr0-*M?Uke z`nqf4ZY{&xQZur$q68@m76aI?zh3#f%6}^D$K$|OuB_+j)*9KlJRUil+LJQC$sC^~ zz0Y}!W~uMfkWRTN?Uc^+Z=m=SfOG#m{=|zAAjO`b$fd)m&8o2hw>6fZR;93s5}3+H(PSjddd-`2?!k^=Tp7ql+^N^J_RK+tcOL*-0z{2+ zcIm)@qf1MbiC&h=<@i!r2|1{&l@a%uLbRJ(W1YO|49h0`X)gFX4rKp0tohSmW0v9Z z0GRo+2OeF1v<+;*G+}E=Eo_**@H0`^QSmt?l516TE@S3gs&2gsZs9S_nLSjc8F1KGlYO_>-}v9iizB5oV&vMaO-*}I%-Zw0fp}8g zk5his^Rm|=`$Xn}-RixjiGc0Ou-OV4VH8|2;Z;XocjONu+%l@!2+f-Dyejd!2sK|# z87Cqg8GdyxBD?L9zb2UJTV;Lk9c95F%cx$_5PMl4C1PFrUj#0 zMd@(bgXyp7CP^a)atjt0_-~wKQH+3_sGB_xWr;^Zjl6!4g@MeBPGVELYn`K|Mq_mt zV=2H|`&HKj`KLgQ)Cc&sSQDDqz^j>Y_F2VJ#7j z;b>V9_8LiG>Po=+40T?lrH(W$^|W2x%VOn7Z=Das`&*x?xr;E7^YRf{cE_iBjIRuus zr5Te%2bw=FC=-|ihW>owl9pl=p2P_uJA=`H80U^QYHiVvk`d!EVSbB)J;%X6x z9VtYBgd)Nu#@7_iw~-@U*Q!u)QH{?Xh8wK86z0?4mzs*pmFp@uRxVYZf2HnQyNhqP zU(rk(X-^HL`*<0)cD?SmccupX$Yk66FJmMAoA;Zj8UR?dH~K*kB>}O<2m4ctH>rT< zjQcRG7E_9%r6f>vREw&EGiT1c8(8d(wS}mfrft)!!zWqONzFvdISGvL)Iz6kwkRg) z_|ivC7AtB-if{oJcZ?;LZEZcXbyu254LHb-J+jsdk#-t}w`rYaTHEW-=WXfKfbL9{&h~W%o$eifSd%WzM1K@6LwG;TV;T#V zXVKHDT2%{z8ktHiFSs6$hVz$PtWD~;PiGh}k24P+>jb2;mScQ^U=k%|-YPBo;{7XN zw=T>{m$&+w$}?rw>I}~Bjq^WOn16hfd;OSsmhNsD^PY#&roy-9B3FB2#M6^L8_Pzi z#Un(G^?cQdu`g0qgA2_ICe2-5hMdbYY#tW@a3=p^97S=Omy_O0v&a^?Y7VhlZqPK1 z{rNt4k?QT*FWd1itjNRm|)05=J+W_}|?81UG7 z9eY-3X@EUvT@|3%Wumy`?dQYNfQNeGGF)@zBp<^C|3xlILwMM)GR~?*kR6~jU@%xM zb@IWKlsGLZ>*~Ky>462mYR>z;KgY(g=y8HUHcc3tqP4wP27->~k1F#D{2?H?~|X~x~hE)&2V%?HN!x;f@{-8pkMHD&)N`W1wJ z<iA55j`p zyl|csd!FFgH zA9O-k!ju2*4{XdM7D(ZTKLI3Fj~Yf63KJ8mFp(6is#cl6n8CEm;qjJS+2qzx8RN!3 zF7qwE0NiSf815^(Rqh%8S%iGt$L#WpF+~)Rf_-L?oWC!lW9=(_{hP7@bmd# z0XWy9t!Ti3pEQra?F6h#Z8?YEJ>@dk4tAT7(NU`_^Rn;xW5($XEt@j$=<8*E<8;oQ z+N-njoD*-X(>yoprpEL)bkJ*T+_$hEq7`cG3B4l zn3D|M>V#)E!V-Td7fYTaIZXEln33 za|@37#p7e%&hk>uV6^jycS>#{@0k3Fo%5@Dw6(LM$Ng!(1N-C`Cw*f}AMpOtnvwvK zeY$vi_PrUL8*WY0d1kRMbP{H~I(fB?qi~a^MNPtt~(Yf z6(0948V-91XRi>PaYN}Bg;Xf@j)TPzain|>h1ziAVz+$0Z){DhBTVRQY+hHpSlSva^dgkNip1hQ*K8qqzE7p!(VU)i^F{UJdXd z`eB61$7wH+{}*siw{i@ul=DKov{daRv@CX>wtjYvIJe4r`00Ax%>$q1hfn3H_5r6I z2b{(xZFjotN+r3qP`-7ahbXMypqlwO)1H32xRZAonVWa`u znPp&{hFZ;UikY%&3=3vbl?tY1zysJoT#NXV$R?>Dn0E3a&kuvZ=lpkgbTdnKvQogD zpH9|NImqsEYPszua|Of^U}vT|mU%T*zW;`7O^*Ywd9m*M2Y5XVi}2`z%Ve#mzIRyo z0dYlOex}m^b}J7}YYv=$$JHF1Eu)#=CAK`1E1pygZ9SKAC5+)0(p6kvpEj|+kMld2k;XBhhcSnhy6scI%X*u;3{psXG2tTqt#VMs80`#}$?Dl6;3sOZ#qXUxd$tF5T8jAkAWI4$b=67gxwCYxjr?glIN>;KMqH>Z2@;l#Yyd(3I$zbWwZB#O@q z-co``ov>Y(eq$}F8?e3Xf~(hhvvw_u*D0N#6U(dja#g(?leO8+z2+A9`3rLC1nkS(5L@qk@5pZP+bsePNeH3qxGyGM@rig<5$c~e99 z;vOnh#`0#{;??vh>_{vE&@N(SqjO-Umtw>*p<$B?9#E+`Sqh9>i3RL9cU#y3R#j-V z3Ggy(P&;7R`+@gB;9fYb^o_vR;uVND8gR{O+GFO?rH@*tDq|wX-pzn&1um(dNw}O5 zFz_%-%>rzalti3hw^4&V29ruuOXHw9-Ug#MH0wHf;K9VMTa((z6?(D=uDjqaA@}j_ z!Z3E}WSu?`!WT4~!T{9cR=Ln_8Ta@$%yrlIWPMr%y&GoRb%4%M(0q=Y?&63`G&qf; zTE9wVvBY&oNh&Gx*GOWqh!RDlzP0Sx(inh^<6W4O|1stZ8^eK>fmn=;1(MHAJJf)h zY1r%6uusAdC25*`C=72}j$z=J3@J5Yif8}1oIA~llISc|;IfTjK3jaBx%%Ki!0&3U zrG}IS%+io=)lvSUYLe$kHLMk$R~!Z_gguo1MzWF@lGB=gzELR-8m9JvJkN?gO#Hj3 zR+`Bw{H;K}ts0Hz0?V2uB2|XV9M2Bovuk~%%+gz9817+1>iCMPiU61p*)umaSMHD8Z z@V6>lSV{!TK7fpsG-KYWo=xNE9opX7dqe{QS1=#miw(vSt6xPI9LQbYER^3q*}dQn z^7acCmg_VKiirBL#(tDK`KPj0(doW@0eH}Q=?{PKvRz@Xn|o}L_LQve&tiLy5{g-) z-;eSeXrk4kq=D{-wo?Q&8%USmPPr)vSFq!`j^B@d041C!m~zG_bLyWwBRot41J)Y7 z|MWq1OvRrG)1GD8Wl>lqEpzH8+-5u^fmun3|HGY*1vJ<0=yz!4>K2 zzoS^9xOT{eChO9C?!bX(8ntK|pLV_3yJH22ZSq{@NV9M3Ic^05El`I0c^KKac$a+D$We&Y$fjf?qxE?mlY4}akIfc02cL7$}`VvfRQ+At+{|DO{7mmL9D&c zqfsUR__h=y7s9A5*Ta4rk))$d2B=1bMf3(!m9mID(x#TDiUc;pg?Bqlzkz8?f0 zCGb%dV%I%MI0sVTa>6}{F{LI=04CyqtjV=;tZ!ACbvQOD;pcAO#L+-;zdQdRH{enKTEY#CZf80t+41LVb~1CYwqM>_UGS zr!CG693)lbVZiMl0ONLdVBQHh!CP2Q0rjl+ybR?T3GP@-1DgkIwT7w00mer1gEdOu z;le-xjDxCHnGlMn<(mFR>BH&+l055n7RSqrIhS7Rn#sB1=hj z$|3otcAcU^=O#MSVl=5^TKclSS>m4Vq{pgDVJ^LdGgsbhN|nb%r}Dwi)yD1}$O<1_ z>m!VM2Jxyzcq6D*xz1aDHIG{tQSF(5K;6@ueb@nIoySoc#etA0mHacQZw66xbHtsx zClA)*8HaRtHwunK(o) zH~%jEYNs?u`@{|B-7ouQ-R`C^&LW;>NW0Gtrm`X>iyV)|yrDYU^DxjcKeln6hBkAF zRhh*^1D)}obV-EmmbEQ7rExdHlgKIgpd}Yl93jjAwpt!aZ9Q0eqLs+P0AR4{B+x;^ zD5iDJ#mBhtA|~E2aJQFH?gy5Zt?*n+JO`Ow^A!^wUPZA7xBz&gbndj+EPF^UyAD~B9x03YgD;c^jZnGp+$h@6v0mE zz0R%W^@LhW*OeAp8XZOY$ptlbN$Za57aKC)hLm_bvM{QClyI1UMg&-^AaHHB1new= z`Wfb);Mg>QIChECcIK4R--tA+mOjR^B+oq@v7}|Sj1FqJqBta+u1iXUrF5cS?e>o| zm76Q~R$g49-0dTK_CZSa>#*+MJ$L5(Zuwlaye#{ib7Ks5KlV%-HKHgLhT&1RO!wM7{?}5b$t~5|iwR~~ zcPXc06c18Ni#0IizY`ne(o{(!VqmEe(ir9%?5$u;+HurSU=MQF-jp-XLyGvFl(L_X zT=tvm!yAQy^TKEa7!U3dzcE6%0c1t;&l6huGjTulgBZ0RUwwv8Uav+4r7wGqGc0B=7cJ) z4LP^RG2K+_ig=oPan&{U1Y{g?AW4m)%w3IuVHuY&(ha+S{BX@Rq~LB{N){cpk-n!x-NC*kfY{J+dK0@(kl2Ie=>GIUt%B%JM=EAObhyYk-32P+?%dQ#~woGJUt|>v69ILZ^^s3Tu8IdpkssMFdt_qPU4{jp)cIt+cW5Br=9rphz@~uux~i z5Rt;$guU_ZZ5Ryg@;%(Tjfe_elFCMC+*V8^%*M!dfqEhq!tZOcy1BXe%gtuv)Du7>C4DGGIE3;}l*v9rUH8nnhkmdEDvi*Q*M*i-6TKq8`U*U@c0Mz?5R@ z`IJk(7%a!N4)GO5cmeq_9y%R<_|^WFca8(pNq}jkBW$m>k%ug0ar$-ZQj#b+ft!n_FebRUxz|B-d6?i>wPM5DlhLm-8_*K z9QBuC)u`1pWqG%i3#x`Mi3e}*V;;6+Da}H6*|f&cq#25B>w=?3+*GeQVLw}>GP4>; zFAdYo67oH1dfNzY?+e`*-ZvVJbKX>`OY-?j4aW9ZnRVrIt|n5tV`;F7r)r#8whNQ@ zmGh0W3%2+9z2;nE#hiq~-vc@KaVpV6CMF6NBlr4{F1}a z`N1H5P?z0=V^Cw-cFT-@&m*T5%-G8TIVJFydieP)HS+lw83RJDMb;T5W zOaeDwM(Jx)gg%0<4b;-MXZlN3zzWJBwP+}k5?gzyh3-(r>)%*Q&gVjg)$KzoIc#jj z;P}WxSI2r?c_;x(lE=krl2xYlX#ZB`*xU`a;UPenFPo{EJLPvm=QpXT1Z}>*Om8sF zT`KLuaImKU;!2riWh7^Eu-!Px0fP@Xw;0)$#Bid3B}USKiQ z0+jL=okO; zh|~4a)nOj*g1yMWuSY7!*>`_=>$VuuTzb#R&mLUZdkZtSaQ;>I-V}Ij%bCD|yA{t1 z=G}sQRekS-qwc++bp3qt>V?rIcOPGpZMu%xjh^_3TKs z_2vgQ?RSmlM(U?apB5kS=?aD5phWV(ICJd_b59DjWpID6ZrYc4ok z_qi0hRdx30;@#;v@vmR;zxmb+E3PT*clIab5`pTrznpc!e%gs(^^*nhFK(zt9~B?> z$lvDvvdl7td>5gAEdJrv^|E_5oEg|OA>CBBJ-1!}PHTJ*-F>s#`4*p zz1}|hDR9;ITRxKZZ8Lh_r=R3&E_uaZ7Q1`VS39?SF!=K2Tj$TDcklTM+<4W_J62x%jrsnsruS!kYee^a zbkbGN@MeDcNi&unfn?8~WXHn!gh6Q_81B>>U->fcu-nwA! zx5MB=%LWSy7k)MU)glJ&T>jlJ^wzJdH$1s`*I8TJlC{Y>uUvP|XyU}rXZ*!+%t41Q zZajBx%2wMu=iEn^Uh&x>>AB-gkzbfkfapyvo#=Z^R{Hf9-JZFoJn=DXbO z=gl}GaKVW`-TlCYb7#MI=OJNv|Djuo2OO%c&fibGZZ zdd0E-$~RUNj#mg@7jv=4H|IP)(#g|=7U+KAO<5lh0 z5t6I!e*5mnW7p}DotX>QU9X#eU+D2W0BV>1i|!4Ysi#iqt$t@_>-+78@aDfg-(E{U z{Nm%cb?3hle)Yz8GY|go^}2)b8(waod1dwGlUJo*dF`dsU*0=?!PNI}e`?E9?>@Eu zrws>Pa_;JLm!E&{T4L8DFJ&}%E@CNMnPj#-zde>bbMcPpY0tYKZogr>Xv(6ck@y+1 zZ-^&l)Z?cJ`HuCoUZ}Z+heEjx^Z`SkIFMRjp$JLK~|Mq>K<{y4^@aT1$ zHKUDBZXP|m_2)NEqi(!!)8?~|6dbwfl){#6Tc>|$c*F3xzWwdev(}w;#ez;~+K=z= z1g7kIwer9bn(K7fqm9g*YtKLL?L$QOHrKV+-M()1y1(k!_n&tC=mOrCz4!E1^@W>{ z`lZ%>gm+dBJ^$-&g#gcm`vA{^_p^vx=UN&t1Rq=@0MUdeXuEgD0P6{UWgA zvfUf6c=z(x_N?4Lz2A(I?VZz~8a(ysE)rG*4_#Gx?TbIHf9(?92~Qkz)2io_WS4NoDJxExGg!K)df9Os9Y5bPXWO@H zZt|ui8@`9`J$KEj!zbNC{!RSOo@eGg5T1S`d)(#oemeP5+jqdEHaYWe3#KWa4H}L* zD{}WF(H|}+PCoS1+V)e|UM^kGUp)6F=aXN|(O)@te*ei}{i-9Vc{5M_bmofBA3k{2 z>r1^ST&-Gp#@pIS==KAC?di0ak1jnrcgkNoOD3&&XknxF^SJe{!G7Y2rTw?OcG|0l zy!3LIHEk>((0^su>GxgpO!CBYm*2GPmJ_be8t?d9=BGv5XFTyt;-h5v!TUd%6FcOF zy*IyqG;@|?8U&;qAM9u0-E)X}^2YrG`)}K`-_dW(5+0n|Zwov30j2EI{EOQ^JtBGF zx6o(n&b{&IZ}xBOnEl!@%}J&9G0NGC&RKWl_Qzd;grxe+V7@SMdY4u083T#E-L(hfdW*-hb|>2=L00SN?F!j-$?{;WPH!eDqoR z{ikf5<2V&NbH6Y3R}y!AYC{I6+;UR)s8?>AchWiQ-0$}P@Wm~!f5<=Swq4jC(S>H- zcL#2lA(_P|T!ENhn)>I5Mn~M{eCxtYc>4h>QTxo}k8Pd5_c-mrl36Rv3qSH6G5uIm zr@eH`ffr9b@2I-ritU2c4;y-g+QP?qU*7qX)i<4imrq?C_Rm}V$l;4mUabA3px$}c z23~FdpH6#XLu=rlo?i9jm(S07ZR;hYX|*3NmRS+?g(n}oep}|)Iq0nQ_e!5iNz*@mkG(gOn0&)^=e%`E^x`uPy=&r8&vu<VS)PE`5FfB?q6~tS9fi(9YQ#yLPbm=4ZpNJYslUcFk&7W(e93@D~oU-qSigu{^O? zWxDCPlfDoAZSvWNJaWxF@}J<3_h&?6It90H!Txac>$A}HpKeTIYrmKx?S&o+rnk@d zqx`3j?z-in`>x$c{dmszonpDT$`S<(p*?h{`e_VU`>aQ}7y?D=wH^omlB$zJ2+L&xlU>`rLEk z6L%xA*|#0%JMk;h%XlIFvY`6$&`j{hqi_Fa8A$eO?2sYL-NVLbbft9|q@GYs>^reo z4g+AeO7?~m2CY%4)@vsKSGn&cn^a>sp)=@};~NP1TL}fIQ7LuM_>QMjrq~J1_=N5a zolg3UiR^>|1eJQwFm6EsYIVwSF{4qZR2kKV|Jii@w+fzShlC~|XiP(F;;@O|ZidTU zasq(&{W)cLvpXhX0`LvXon{s8Q5|wz7zj04w%MbIW^LG*09C5-Eqq9JlM@F01Q4Iz zA2+a%pndc*&Hj*P4zt<*=a4nO8?v*^lKV>jmkvEmh8?;ZWoBP@f8W-`uS|tNV1|9&0M zzjPQk{x6mPwebIWCGD8+|3tt4=NepPJJDVAFq3?!PhYzZvoWKStz# zFZQ*+6Z>PuGbEX@tlg);h9pA%DwW4tDM^Gp?^1lUmmJQJl0NnBByU#uN70(`e-d|>2_RF8AT#DYs6bo1S?(A=O zawnO&_guPo_LC|75leSJ-&J1n=7jyAv#=LiTqW;p!{o;%5y#T+ZLO}@Jm-q>F4gzF z^7%sLARwa_KjF0zm(Sn7b?M`mp1J8N>C?a}^R(sv)kM(!D~wZt#((D`IH7?whQH(E zR-)a>5y#%h-ZW#{x7DXVTE6+-Dd}lTA3fl)4KJkW#drK!v-*G=-t&E^3GL6_jCOE) za`R~NMNkxB>r~j;%hQ@E2PISxkS1+ z|BQO)nXK!>LpeV`x6HQb>~UWB!udva)4jf9=DFIpy)kdw#Y^9xHSIz5A*&NR-o!7x zMmqhi5P#}<-`rrzu33v4G21>Wgj2S-!4z4`IkUyis-U9I`~C;A&_e=a)p<~znX&xzB93gF{OT32&gR%|z7D?WkPp?5r|kFdUG&)OpHFPeC{JIq__jGm?p}WL zhD)#cKCx}?_DO5)2QMlvk*^N^^5gA>FHd^?mt4MZxBesUOEZYiXFjUK-@gBH`_a1- zYwdHe_GkCph9B|s(%DxX@o_u#@JW*oeIAeWOD`OM`@DAd>RXTc`pSh@EWGfAXCEX^x^dH=XPkb<)h{j>&b^>1vL1fcjJtx5 zzdrT7%W^*-aQdBQ3A|vLea?K~FDnkp++n%#w5eC?Ui#+P{MVbG-EiNGomV_IZQ4zL z`t!1-f4OqncYAG@ZqZ%*(D`pXkpAw%;xmlk#~1#%`uyOTNI~$aU62Nksq&dyrQBdi?AoH=x%RNL zv#TGO`_Qrar{k|K={>Y#VK23F`nyx-9k*-qho6hCyyJ_<&V2cis&L1`4V|f*-+SVX zD<7J+X~!JdQ1*7+xO->!`Im0rk(#lf{K%4F zGjD2VF3z5R)fKX2Zs#Fq&HLs@llkdG-hBDm9oz4S2R1D_yS@79>p!^Vu4)1LYT07< z5lb@i-n;%+lhcG-llD!^w_U&P?cSw2{9XCqo=@*IzApVvfBb=mkk`uN&+Yuu{rTGy zQ0wX!znpA32z#yk#5Iz@`g3`QeSFKTuR7)1;w=UW#dkb!G@SnF!FMiHTzmNZE$*#1 z&wpgOsoLTYTh<=8V8-~h-wUo?f5!_Su6gnSY}zAp-tJ!i@`Y%iRVfvvJ=?3-Vn-PV z50f+Q>2^+jYbj?XbY%M;>KDtWkG;Qi#c=L0`|3kO`;9xUyx`i?n4#jw2Z1j>98O*B z+kEY4#)Ws-KRWLLzR8lcZ<@@0HfhiG)%DCBw>B4K{+N-Tbm{F^4$iv&y33DUKkLJv z$xYdB=gwOF{$8cv+`~V8`2h6eYrb87`4rnbXFR)YM(evptqrFhcEj--mb)Vx&Wc?2 zop9Ml$E!?lt$*-E-r>VbzPYpg+3fz(3(RL^@i&w2?H_q=(MgXeKBISe&cCB#|KN(b zqfhwai;vtmO{JUv@k+ysXNaoHHeL5sedfgHOs)0zaCF?6 zSFK)acW$|B=cT?Ew_UVoQuDkYg;n#4X@Yh4fnoot!}A8Rz8_PE(a+Di8wH@%$gTxv zY&~?t)N4;BKR9{byQe*8mCw>|*zd&-8~kX8>rCwn=W6!8evE#@0rz@#WeyyFcaUAe z5AT_E;eaoE@S?p_=g{}Bq>eb@DbJA_iQ@1vM zIQ8odU$1%V&evxx{yBcu+-EM#elqpmg)85i{?cpb+I;NViEWd<+kO{&_@A#o_l{G( z-!z-}%g2Yb{=9qkW4E00&En&Z{AAt9EAYxUg?qDqS$@F@53fycN@%~#!1uqNp8Mtl z{mG9_uAKVK3d5xzXAkdewaOpe|CtZ8M=w3^-aWm(EM;J$IC zi2g)!x#ys_j`-I08k6|(m;KpuA6|7HQC8hpR@D2 zsqzO<=Itl*&s}oD<;AV8h3e3h-3xX+dEaG=aq`Sl+O;`*jD_cnhwS-Lzw;;J=#4+k zTr*gBhpKnl!|W}0#?CzKqkEa7g7lweEUV9sPWk-tPZST6(A-s?_YOGq=QrOethasm z>N68>Zl1|NTzE45`E$F!ney1?b>5@A*#5<@pDJE+Yr4F5_Wf^uvaq`5x}OeTmi{Ku zduhqZw(Gv=AMw;--%0P1UNQZ#se3i+fAGG1koN;QddRX<K~p^GjaNJ} z?MmM13%CB@Cq6x*aA$G96PBK<*1u)CZ>s*)>a?YS_wV@dmeb$rJ^#e!gF}Io{orK} zpQca4J1h4ceE98qufbQY6xEmDfqUK;K2*KpvLhEZPe1i~H4(V;^1074XHI9jQ#arH z!w)?4B;iL3cE7euf8o_=;ZHX`;ag<7_)PufdynGM_8*QNNix^;?rm=uesV!^udciH z$Bo~;30$1{Ky>8__eVP>0W;r!LUhz8TjxA-_>+oHe)-bz@v(!n=9%piqr!Wa&pJ@K zbadkr^0|B2KOJ`Kb>|D`3FobD{L-B8Nkg%Dw@H2OE0^%^HU_Rd{z|^@k`;IDI%Dlc zKTkR`Q>^`0>p}lJ>*4<^fMK5n^A7uTTnj7{vD=GeZ1zkdBTo#1a!9Jmh^96$T5(%3Ef zZ6WYX-UbajK?~jp2%&CP@Xm+>qwQDq$eD< z&)KMW*au@wUt4uHS zdQ-AKGQ<)^q12?4n__rc9>aZJBuFZg19z3D@0kb(-f^2`c`k`yRMF^nBlcJxvFV#5 zv&dp{+qoH;kDF-<4Sqyysae~KjJs#>+l?{{C5mUAWmO7t6?H;xlj%*e zhs4 zCCDJmG$2Q-fCR;o^nRAUOTWXTHMp`<0%z|(d`Ih~N^x!z{l z>5e75WUho8=wz%j=wfR9kS<$Px`wNR78=U3qay8sk|>vn8wWzA7p3*(f)9tPQo5G3 z^BlcGQbnO%mn74md9H$um+`O(Ow_Wt`n3Wl3G@u=u}IBAQKdg-qSMY;!xXc|%4&~Z0PcZKjW>U=}rB;p70#7eg z;BaMDZ=Hw=LXadyfImO}N8_^3ap_tBlPe<|o2kJI2cGXo6C< zb9PrG*>A<{qJ%@`)xmWcV&u}pZYW&{bmQTw4jFV!j2Lg!`c}S5!Y^XZ2#?ETnS8=* zx41fWv!Bg?ObWN_E2D^CLfLJMpMc!?rZtP3t#vk!b{S_^%FrH01BoK?FJR3VPUbga9Dp~XlCWHeS~hEj>FNeM1Q`)Z+uCk~oGUPi#-*>wt% zK@?86uo;R0(NS00iq{23Xl76oZVkm{bIn4QJc_i|wTTeQ@Sql&=s3 z{+)cSaCikoZWttmUcI8{s0-;{Okl`p0fCf)xw$~l&*>%WIbN@-YRcmQL}#jdY^j1= z8dUkTc{c8-OW0^%G)(X{wv^4#RRl@_G1KQtvA%jp~UKS-rl)GB& zhT91O?j?DYfpJ^w3~CIMkr9dq)Oke=?RR0EkNe6@e!Qtb$1!ZRWc^N7Qt6B37Fplo z0J}n=r%jjn**dpM8Eg)ZPb&)LgOW%Qg-p&WE63=T$f7s(Wj=8^%KB3UTQgj;_Q^1% zl&bTks&HsklS!x5tHH(M0)fCPB41936tKEo>&N(I3h6|+YNt4069znP^`KO@ri>O) z&vaV^k?UKz!W!Of@Wmii#~3G-GQ>JazE?Bq5otRtrWvjjN(E^y?9Ck8g>WtzK7$ zf#7tF&cu~zrP~(Z7?_Ym9*IdiX|YJkS~$Hz*%qZ_j(8nzW(*8Z?2@(o`dDqyBlBuo zKZ^uaEoY;G*xH3ac397bWBsZ|-?rrJ{z5C@u=&+`GF33ON4nT3cXyS zoeYrrI-_b~QWfBi5V@k;nIqkjY8}e5u6|b1M6GsiUYd|aOFf>%f>(MSpwTIhRfcCQ z8I6T@i5Eo}hsG*!)=PD--8Yb@yA0){(i-Afp-I2Ua}LGwV8|g7 zYPlw3p3Ri}dXHM|CK{-N=Zr!wE?l=c9pOZx4c9TToKtNMTpgj;?!W_tTcR2Dm3~bl z7u4i~<#IY$*F}qRT#yyH18!GTDwB%?GLg$Pl(+aYZN(nw*41W4r*sO%4R>|K_l@*T zfK$=r%-tr?*O%cY2#9h%mBVY1sBx#q;)Af;;o(rYMlGwCgjIfxt18l7Lq{dfc});aTXRU)Z`L&Nx=Nig zmCH$uJ;yUARPvZ1$D{HQcg5Kero?d{o#O^8IU#6*ga}oZo6=31G9!u@AaoX@Vs#?c zE0#H+%S@*tejAjF!y;NqA#x~Z(TLkjUy=tBO=lZy3&)-b095l?pL>`N8#38?*x*T* z^`tP8g2g>=LtOO8jXhwb9H#NIvXpJgyR~|(VE_nJ5-VCNSltp=#7JJvqeu-RPNELP z{B=!T=k$&YlCm<2*YYXFpjXcayG~Kn*)T++gTA3vtLHH+Do9szI4_%|gD6tfLJes! z>QCT6V0mEGuEEvs*a9BOy1g+H)WW) zR>wP$k=M#8+HCG(qa2la;xe;Nm+H|n*MJ-5bBda=y_Dy~hccNu-biQi%)pX_8d)Ey z2mAeSM;DKU3aC+9NaeyVn-3gY4yiPfRtb6*IS$gpe$S8wWq~MH0V=YQR=rb4(*d)a z40Rkvdtc=2dgN)OB=jP-U|yY8gb=)i58Z}??j+C)8iCzBWVpk|(m@`Vnwl}po3G%ZnUbm@f6)2;~$s%D31RRKe_XUZjY&ISaeQj8v5A*<(2~kPd%o>vH`l9xoWA=59F8rh4#*+c4|Q`ZzW;v!-rHLO19_duZeL`>ISzpDX0}&A20M z@nMY^0`=rfi5;L`wM|SnwCPknUX3*UYP;E7tab}PvC>W|1VzRH#juhN(S+(&juvU_ zwE>+m$IY6uX&1}1>Irp{ZIVSCvvWe-h|e3tgyD8dEcVdj)g%FZ=3KSPH+x!UV_#R6 zH!=jG2xc^GN7F&DIxm`mx$U$v)8%Rg3~bW%sTNR^| z>*^`BMLXG$vK3iWAvKGEJnJ8;^n|zhk1U|y=W6_m77%FA8Gr9#R=9xJE^?1}qF7yt zwkw+Gpet~v$OuQk8SHr$4QDeToDcvikSh?$ph2<*L@PW2<~M^lZDjnuiX?02K;A^xnjNN4L9@&& zSTRe1O-4eLIMwo~#Tt7+B-6NMP=qRZ$cBe2Pj~##2(2ed1Xov-q#3EP%5etO>T!CF zK!j>3M=V=Q8(V@Jjz=nZJWtU6me}Ttj(7>5%mS9;RRFR#g-VrH7NQlcxIxexFUMrq zOmanLkQ+0Ffk=)3k~FDQlBYuBtzn%gcd~k?*&p-C1dzUx zG;8W%msP`;H;TH!*xhyDE?CvUnk9da#}SF^N%^p?ZZcdUDhAZe76uUNV54F+EAsUL zN$J3Bm6zjma{(AY5U?#Sg*828QJ-OCvOw42tZ{5eJTMle79(87i{@C~8*otqn^v3v zOm%yy?nz+;ZuHoFNi{*1#L0o6K@kSRK2U|zOj9yycf4qfH&6~JrMTSVgmG&CSC*)d z(1!w|w6H6;d(s{_m-S}Mlt@YUD2n5zN5z7|H2zndfK*hmrJG&{PS^!C!kQ$zb%3Nx z!+;_qFcBF@B`A%QR-)O>wW<`Ur_luI85zYRf+sC?4UVQJ<1VV;1g3UbIn^wwsb_SZ zz6pkkwwy8Ru-T$1yEUAKx=Og$8-(C87RHqrXh;(T3KwZTQf)W2iGbB7q9itl*Fga# zhbE#as$_IS!mBqNHlr5B$p%Wq%y1qM$;HEluTHSGh$Y&I*R;}#S2yfrBgz0S({z$h zF`Lm8^t7O#CevlrgRi`l}I#RQkZ#;PD$7im64za!J?wt*srxI zd)gX=yJZS-+?xeSwE*BrD#<|3R83~=F|o)k$T_fnOUF7*c^*fiu-Peb3xhqTZUPe$ zZjPEnaf}z^1A;^~=NB+#sa`qqy15}*U?b&{wz!h)Vt^oGbkh-aUndDTVjQO-TMb3s zzBVwj4Z{f)715Lm1KOCWDd9*=-qT~TN?4W=y8|InAC@-S)YuM`ii;^GMKvU4zJ*j* zG-8=Q5s~Nle7>rbb}Hk%e4aa~F_oIpW#a~VHJ>w0)ooGGgjnomVZE)bWZ=-q!vIbj zCSbadwnX#`DQ+#C(3_);MAOpfNelh);sl+=COaB%%W0TfgKTzNi74U{z^9}K*SBR6EG{6L=|SFDNtGKnA9Gx8#Fz~*iMX^ z#iU9J)v+wn)=@kcjN7@OBgi4gp1(nt>r2QXSD=L8oXpJh>Kr)-65&FjuF&u`qjk76 zGMaFGqFW=Xa$eW1RFyJgn~<02w=j*d?VyoT)tHs}$|YgKQ#COx7Wa?|Rj3sy3E?0d zswEg@!XbrKoiCWXEKNKyae?3#ZL3f363|4C6x8UP}Y2~A~B-W{+yL61(- zY6@7!=!Wx5s(>gh@|s_n<$I&vR*+xP%2Ke_?<87gA{Zuk8H+p#Kn4yJ5h0+K=J}nr zdTH!x>Xm3E!qq1PhDKh>HSpU0s;Ok-M`DE*&(%q0jbm^@uZMyeOH!!s;=Yu`31 zkt_zlAqc3rqG)1h$+!{?R3}TS)NB;An8~107ty9fQB^!Cbt^j60igHO1G5OwD%Eum zESa))e@85oC<$?gvXHt0n6|P2C&mQCoC@Fvu<>P0+a~KR9q7>1lr{u{EVfc8Kgg%T z`I@4VwKz+qu+3;L6L~>jXqHAwB3_0Q^OfTYH5&Ba+ETIGz*-4KDWPhM zbvk}3KM=VGDYrrZ4tqRB04$2eKj64aL8|y+z@uyAEfDDBib8BP25`AbrK?;N@XFtjN-iw)*arxl~LN zVm7G}Lrgi140vv^kt_Kngs|k2vU;*5>(SY)zfojB8Cs~}yrR#NAC!hwkD95wp^UNL zrVvWwj}WC+!X>oU_*%y8(Dk{ZY!<7>?QT5k%@MvPZ)6O}ECEa)Q@Eq5LJbWJgz8u) z)CfzxVYHm&_0fdR6657WO{`TLbd}JEY2~f8iqjeg`7M9OpunJ_P7$w1%0O5q6%!gF z9cL>es1u-cP9FfFyuLU*wkL-rxZMhS8iq3KEK6Z=*W1YERpw%(@317>VwEougbLkQ z7_pK@y|P5(*|LWM*=`jds2f~47ptpSWx5Ev6ONWy0;ZxElS{$bFdr!zycUj@qvdK^ z8kFCc6p>IjY|lBYW-O|RFyV9{WT@J@S;7+%c`*%z6S_Vm?e+12rIA&33j_mrZI*gI z$4i?742ClvdAQ_K%MhMF5mx0i0WY6*L{U6Z2-+DtJj(GBVx$xF1zp2x7^EKUJp;W`UNP?WQf4Fr#LSQ-tx2P_DCsD!C350|Af zDL+B0bEvIZ8wGH!ts1w5$~}|J8|7k9Qk4d1zX!GI`bb#YAtk|PDK4R;oI>dzdUX3@ zivM?GhM?|0VcO=ZvEv#@gs>x1ZG#AJDD^enY{1`gJDq)*h|-y)5kOVTL3X%(%f}qD%84lx6*25K* z6h6`!s~01JTHBL|RYM_dtl88n@ouYEAd|EaKr-QECE2Svkv2n@E24M>$8`xYuFU&z zfY6N>ZcJ!zWTJv1kx3T@Mhtd|h2c`O1Sa)hF)0%1+BSJRXvj&889HikwT!8Tkz-N? zljSzY9hXGtgx8uAr?uAdNZW~bl&xH$s-vnBX)0|4#hG420V|QXi${<(B4enTh-kkp zuJZ}Izbe!Ppgds-SA0o3l@rFji4` z%prRL6H3`OD5?5GPF!aUFxI}jS85>1K)#4XgLMyWvOo%|plNmWBr2Vew$7QMFL60gEW=8BUz9PrCv%2d3jrY0)%D zmx4S#qppbqngpmp<1$YPP=b{_;MPH)p3Lb)nmVSF`(e3OZ3%n9l3s}NdgHawA*(XT zO;mWG-IuUQBXOwc=oUqSXemB&M*L~F1q*WnPErsNTIIf&i9%_ zn{{6<(=+E&Ss+Ea0I{LjmV)|zU+8wHTpF&k>dw=Vnkh7J1{tlLCnz_pu((CDJsT{y z4ZRr9?2oJlNaQuf+q{MeFfv6!GNKauT_cE*kOQ++qc#NL91_q$F{!&609AN4tWleR zjy4fP%YjzLfC`xA*w$0?$|8BC?Uds&k`v|IlO9xtDpVehtD1(Irc#Rr-O6DE)rsPS zb&!l!g8b^7P7Qu zBvOW?C7!jAjz^k4HK&IsnnQhLWCuE!(G%4t;*<;@s{9H^#SrzGq~k>rZxsj?*`?J{ z$gS5p_^i>w{3C<-_jynMDsrX&yYzE(j9f{L9e*`3mUAws(+g>pU7yH83A*MkEQJDC zU7-yo3Hw;zDdc5efsOjrNTS7U*(#!fDWrD>o87ulB^ZSwE~TmCRHzjFydz*$WZM?G zQDxAilp9~=HXRL;_c|hS- zpS|Mm1dABQ>Mx5^K&)N%NNb28r_D%mJY^&*>x@PNjiDe8S=@3B9OoCM+Pu>0!nkNi zZ0!M%6e|e_`H}+a#8jMY)W;J#JOS%?S8Gk#7q<3uV4~R;`{LD_UJ6Nv{A5ZW(ub^# zGMTp5^x!CE2V{9zL*oN$w2d#uhrM8xEi@hS$Fcp_% zpd^bq%#*D*`(Ry{_o+J3kU9Wr+pcW2tS*#DAH^LH*~S8~um;KXSX-Vk)giYq;xlW# z;b>B)mwRG97dhlnX=637$*TgmvlL1adcYzMpptg22ui_nUfhwz2NtodIjlNp%<5{{ zbLvJ=E-aWGMWw7;l;j(@S{Uz<8r_I5v<#)@Fw3jbMPo|s@Gehs8Dm$v3ThzBj&nWmU; zZ8l0tsV+@c1SW^Xof6m7y(Vc$j1w+|j38W%Xsym_kyi$JLfV}1$s0+&$6%r*5iFib z_7oaPtZNpKW_paH46$O-?e_3R-hvU6xMMs69aWSex5r>ZxWaV5Xi>WI{#x5_UrhGl(ufCl!Z#1PoZ*M zK@Z8sI8)N83*laMfOLzaLscQ3Y%~%86h!h&B40=|^{mfmEHx@zAHcDd6hNv*$VWazVHh86|x{Udu;} zVXt7UrG;Z~Zk$?Dt?BapxRkI;v>;_{#Ij!3fDZfHIn1a;@_n&aT!FQYY{(dPwT5X4 zk4aMU2;0y$h5nuZihF}7Pt5iK4ut3R%?=t21vCv>1$qLM$Eo%q;<8qxt2+eoLQbaX z<}kExHW#uY(i&u?U?<(_4+V{}94Xs-z7%CFGzN0q4i5|wH|7_pfx3<3ALETVvJpll zB}PxWJAAdy6Qs+YaI)G@5J_LarR*8Ap1j^~76ct5buA*%#4Us!ZZ*q5Uput=Z8>vF z7wWc+MTe*h^kOki7l?@oP{24MQHh7scB(*gwu);rjY8a}8o#QO5ddndEKN(geeEFI z^C>AVFB4aJSYFfua}JN%9IiL#lwnoAmnuOav%}Ts4m8=I*5@C2 z)d^wH&17Y189PQ36Jpq3YD9WwtzHCF8&={UDaqew%KocLQfmNzj~bPS360I}j0S|J z6imcqTvcHlBKH~kQlQ-Kn+3E;ODcIfXD;9ecmzaCD0s+GXNGB>$*D<|1X7bxPBk-R z)2LCfZHtDZbc7j+)KspQ6(Oq((glFHdx#M65YTNDT#`Z?PZ16(Z;M6ZW~G%2k7G)8 z($cY5s!o|~1S-c^yEv3F>iY~mwnK2NqQ@eLQW7?4@p8%9(&Pep86a?Zv^^?jCRmUL zYcj(qU(jPrBh?xW5DMpW0)9E3M|=`>!KJY_INg|}r0ADw9>892NewEq!ClU)VRQub#2SYL!#tl>%R}fG4^)l@U?v$w`D0|3Qz83cHkxSyhE6}sO2nL&L{jM@8etL< zmYpJr7RRfK0%zD~;I2_2XW9z5!^^9~iD;%+;ZPo?0+=F(iX`6-Yet&9jgi=NCR;Th zM9p1~f=t&Sp}l00#p`lAU+WI*Dk>Y4KsweqTIr)ir-sAUl(6n`H|VO*9l#wFf_8!) zp-__@1#RtKngZKBo(>wM#^SQ;ita@zfSp3mmW(!&;b`6=kW?&SV8m8zW`5Qf9&hwh$kjPY zQ@~Lyz;-+xCyWTmfz^_d-4YqBsz7OZq?1(jTqFD0uHQ-~ifiW6Cd)$H?+!D2qQWP)%%Ctbv#C_XYq@^+M~ zMq4!xYyzd;0b#F4&Hb{CD%X5A2S4rC`8=rE;tElNA{rX0@`Z?r$EymQBRvI{2*jhs z6x_y0YVxJ4JOpIbeI+ij3%gB~Tg&0N%7(5e)hn4%N4)7)j`L~V$uKr(6L>}gC}?L& zu4-b@p1fos%|k5$I@y6@#8abOBq23AJ1K`T0{cv4Jf#Xja7FCp7nG8|h=mJ*q|Bph zDp{gRILfL~JFQIy>KT2^ZW_SRdKv|*>ZZaAc%42%Gt#=X0M`-mn-FoPn23Zqm5#|O zxAtYhpfXkmijYI)rZP-E$R*QbHQSd9J!7vlivEwvu54LVW!b*3uULrKfl804sMyik zq1b?^APROUh!H35*Wa2uZk)5%oIB#i@y(2sqG&2dWsV%)Za0hHY}DYN0@2@l9{$@v z#B+ZHBEYnCgu|h*%hgw-K7QHJ=V996>bF7GGu!tO$U}3bNm@7d^J-t#QgloC$Ud;c z&<@J`=VE=hJzpD|v85Nn`8hw`N4v|tyKvQvvWDr_6N~1HDrwhebOez}Fqy9(=}KJ{ z1Y$Y`DgCiX7xVAQXW@u1L@`ro>%B9pj_^Lc)C*t`X;#qb6eHBE^yy;;_C{qaG$PQ> z7K{fAWa(t+NX=!=yT`WL6OdA9$mXR{LY&$5g%f1XTfDV#dmxwL&Y3vW0zsnJadN$U zcDQ30yd<(4by+(L^hhHc>(UM|o$_H)XxDefxivAtzrF zESh+}a;|2A-CAF}Y(XoN0hGHws5LJ{kM*a%0M*BL19JS2EY2Ni z=%-S*IO)8v{bBlOX>(p}+fknpo+N86Z^FT_OUeB+RC&c8qd}?U?~Xl=I##kZ>%L3R zuWgq+me~$S8&0u;qlhB4Emq47eY@^vw^&^{xn5C}W{vu?VdLEWv~}u*KHL)?mqop; z?1*SP$P7ibe~?GTT=aa78DBoIvx{F(GwWuShqY2%oIP4er}`*Hz6$LoDV0^Wr>p8i z%l;%`Eo7bGFYBbYrnD&7kFkk?6d@TA={8wx)_Xdu6=*5<;0?SxKS_Cjt0$$kT&n5b zWwUd1kR9l-xW;ff?Cs@|L9^ebn8$(}>%027fvHHVKc?SMrANZdSeac3tFu8qH`Kv~ zWm?HHxt1~FI!-OwD5=w$#QZeJxXA>+W6eX0$rN-maH{a}Cl;}OqNFCN9@Kwck} z@RXE#%gb!z8`a{ibLf+K!M^k=^1#NN+Ya}o&1wM;Tc&^K3=}{F-zr_MSrO3VOqu7d z8-HK-w9AlhEh&U)Yz}aFWiUt6Ul==ppdZQ7&VFTOf+z zzBU0<h6LWr2ifnu=aS8T92cTNHY>r+bx}HYI{M3gsb@&P1*z4Nkql_tvGXR~ zk3NDrANLgad24vx9rb3OBB_&*=X9EB`;d8-j!U=AjbOzIXY9E+0P!5EDa#5dn-n%K zvlAJ}-i((y5SezzbEtoqRn=I5dP^3K?u%wTYT(GERlqeYy!MXK8u^UFolV|*0rt^^ z*~91(On+iyrN?BajGA7`xq@MeGTS^&PUf0z zoUx{6zHW^J#~AU&>kJOkPpver3I4sgBST@?yfjDiZ4rxUM~+y_tPI{o{6lfVju}#S zsF@$Gw(l)wQ?id9g;LV3@U0BJ8sT)YDmt7f^-E|gXTCuvoou7eF|VDEM@9&m2y^$0 z7?Own@R?MG*Y@<8);gc@C$u{9HYpVzac*#`Z(jogH^-*LI;omD%<+bP(MG`w$yN07 zQnt2+;c~PTHj^7yS=#0DQSC-Tz&@s@;nhcGGv9h{a-9V%BttoSY2SKO2dA0x z#TiPv6_2g#gd?!IRQ`xwITP$xLF6ya_nqoDd_7&{jRovuTXNT$81ZBnYtgX9T_dl@1! zN}s`1%H@|$rciHqlHCikU86ZJpyKN>xjJCU%f;jS)u|GfNu|@>Go(4ZoICmIMiX%c ze}lYVXO0v)-e~BAaBv=(&*QYaRk@YhF7gjWm=SIGsbN(%W&yV~svOmoXv=MPjH7nV z!09&IDZ{;dir(^$Rh~+5;|5dZvr)YFs~06iLY=Hs&iibsQ!4X}`@mb3!k(ZB>$qau zIVc(w)zbW38=igfbip^Ib45w~ep@=}#Dzkz`)A^5lr3ZD9_OPA&zLkRqp{oW#oe^a zm$Gi9%@|v{<&H59!YaNahBFI)8;WL!8BXd?U$|w z0g+XD59>TC_nK9rwA)$B#)(O7teIg{P3 ziYHP~vHCouZwC>a$u1oVPRBHs8MML{Z6wpn);mcWGw;~r#b|z>)Z_OfEJ-4@tR&IA zzpPB5WRe!TV=15uxIEq#^H9dinPCJ0C_t9+%b@uvZT8nY_c>Gx0Fa)wCe+<6ZaWjd zx@6919bIw=D5l4ziB|2?urp64@S2(UpdLIvwb9^_67^2<$>ax1aWN36t*?ZH>SC?HZaP|6Wy+o(-yhJ;Cm2NHP zK@N@!8mf(2v#ip=krj3K5X`^hql1*g4k0vbDoLH|b*#>))JBqiJ+x=8&aQ)m$P-x6 zSX9f~%5& zPS}=KvRqZ`x6>7))$7J9?>!Yp$y!o*3R$Mk5Zby}9g^cb8fvY2*851pBLcL}o8mT3 zae~CdxOfemxko8AHBN#pao)LwaJG;R6=7KMKaB$G zH*%A*0wA>|RMLez4xK(gQ!PxF?nU42v?3^tY8 zNrluJNo>vY!q=5^uasn7yM7u&xPw#2o4+lfZXw1qnT_U{u_@`5e_A^K-i!R-E}b;b z{+ZHyG=hJ?kSS_sOGZR$}*0!@e&< zKl6+zLWD{T*&IoNIht6OdMS%&SHdgUJVu={R|F6MRBs3EbFl*V{Y^EA4mBfw0dmr# zRatAe%{^zxpoX;c;6;O+dcE?};x#ly1~Mqr%6L#A%1aegTxOjb;#P{(?YTS*b1%in zopQU}U7X5wbD9qy8#2rgfOT~DYwYJbS;K&*xNl;ITk*0u#*6)45ubd!zFIfln-8{Z z+{V1X;78$>B(6@H?dfU`n3wC}v>TYMvLIM{4!SDc^$Q-iEbYF#<9Geixr35j<#niE zHgU~61j-#>b<>lEN*7Dp6hF-34LF!5Zt8+&h8Ar2t=Rvjy$<$mw?=8Itde0*0 z1qU*%H}+~wc1hdAn=Y5OY>qxwE;&nU6IKt7lToJFhGsO?jC7=zytv8e)vi(?EB{5W zqSyK|Sn|b}_H6TyzUSh_*{x0ZQ^Cy@8*hTyk>YzbK~3&@)#zn26&bEywoR8jEy#^3 zmwkxj;1WLKK!rOgs(bYfp;2SW3afoaFJF}-agcW@e{sF)QMu{#gPjXOIqPw?t<^tY z4$r!InD)`lyS+hA@L?@f{88Pn_8pF9%d*vOoD8+rZ)En1UX-}zN5#w1>%I_stG72& znNDiYF+1~cZY4nr+m-T=&SvI|+;O<&#kV)AI(0_MGwuB{7^V_Ff(DdW&}NGwHvyAXJV^^Q4JJJF%eQ6SS{l5L!m3&4CJX zQ?u(pT2yl)Ka1ii_a(fd?LxGtrM>^(|mzmY<;{z znJTTe$;3~uP7JoPZdF9flxf8gM9lL`^U(9WjW}E5<6Ne_tXEfCZ%&|dbRWR^!;ucg zVP@BmR^>f5`edo~^L;tyJw?Ct>6x`SwVC|DK0M04ey`UY>t*&2!_w<<&Gm;*t?Nk; zB;EQ^nhi3^LsaG%+0ELEdpg3;U0?0wQ}@=1?x*#;hcWB=q&KJ&B8vuXE}p6&?;+pceNFNMZcn=QqnR6!ZK1 z``(~stV z`my{^KOX;a&Y%bi*dl+9K~i5L9N%mV5ZC)|o~u8` zrAYk8`B4=8wMqKZkHN|BHjb=u-{-+m#Fw(jAHN05BK^aU=9wRU9M1lY2#)%GE;WkfzhBcDLvr7bS7Vu<$E#7y_xr{J zMI4~A^2fM5iT`-6z%2egk2G%B6UpF-Q)iyq2oV~pU0PYbh-T7zW{+CpqKL>DV^f4UsWYK xKY#zF3S|7M8qa6?`|Bb74Zh4T|8x3!`Tr8!bd&V2<$wnd6Zs2429x2h{{?FlIf(!O diff --git a/scripts/export_can_pdf.py b/scripts/export_can_pdf.py index 3cd91f0..a597c46 100644 --- a/scripts/export_can_pdf.py +++ b/scripts/export_can_pdf.py @@ -28,7 +28,7 @@ def inline(text): def link(match): label, target = match.groups() if not target.startswith(('http://', 'https://')): - target = REMOTE + ('AMI.dbc' if target == '../AMI.dbc' else 'docs/' + target) + target = REMOTE + (target[3:] if target.startswith('../') else 'docs/' + target) return f'{label}' return re.sub(r'\[([^\]]+)\]\(([^)]+)\)', link, text) @@ -78,6 +78,7 @@ def export(font_path): proportions = { 2: [0.15, 0.85], 3: [0.17, 0.40, 0.43], + 4: [0.12, 0.15, 0.20, 0.53], 6: [0.11, 0.055, 0.04, 0.28, 0.365, 0.15], 8: [0.32, 0.055, 0.055, 0.10, 0.09, 0.08, 0.06, 0.24], }[count] @@ -126,7 +127,7 @@ def export(font_path): canvas.line(40, 31, page_width-40, 31) canvas.setFont('AMIChinese', 8) canvas.setFillColor(colors.HexColor('#506775')) - canvas.drawString(40, 19, 'AMI-2.0 | 2026-10-03 | CAN 接口说明') + canvas.drawString(40, 19, 'AMI-2.1 | 2026-10-03 | CAN1 500K / CAN2 250K') canvas.drawRightString(page_width-40, 19, f'{doc.page}') canvas.restoreState() @@ -135,7 +136,7 @@ def export(font_path): leftMargin=40, rightMargin=40, topMargin=36, bottomMargin=44, title='AMI CAN 报文说明', author='AMI / YMR', - subject='AMI CAN DBC v2.0: SDC, BMS and task requests') + subject='AMI CAN DBC v2.1: CAN1 500K / CAN2 250K') document.build(story, onFirstPage=footer, onLaterPages=footer) print(OUTPUT) diff --git a/scripts/export_dbc_docs.py b/scripts/export_dbc_docs.py index e5371ce..74d7cd5 100644 --- a/scripts/export_dbc_docs.py +++ b/scripts/export_dbc_docs.py @@ -6,6 +6,21 @@ import cantools ROOT = Path(__file__).resolve().parents[1] OUTPUT = ROOT / 'docs/AMI_CAN_DBC说明.md' +CAN2_OUTPUT = ROOT / 'AMI_CAN2_250k.dbc' + + +def can2_dbc_text(): + text = (ROOT / 'AMI.dbc').read_text(encoding='ascii') + for old, new in [ + ('BA_DEF_DEF_ "Baudrate" 500000;', 'BA_DEF_DEF_ "Baudrate" 250000;'), + ('BA_ "Baudrate" 500000;', 'BA_ "Baudrate" 250000;'), + ('"AMIPort" "CAN1";', '"AMIPort" "CAN2";'), + ('This file is CAN1; use AMI_CAN2_250k.dbc for CAN2.', + 'This file is CAN2; use AMI.dbc for CAN1.'), + ]: + assert old in text, old + text = text.replace(old, new) + return text PURPOSE = { 0x300: 'AMI -> VCU:用户确认后的任务选择请求', @@ -27,8 +42,19 @@ def render(): '# AMI CAN DBC 说明', '', f'版本:`{db.version}`。由 [AMI.dbc](../AMI.dbc) 自动生成,10 条报文、33 个信号。', '', '## 使用范围', '', - 'CAN1 / CAN2 功能相同,均为 500 kbit/s、Classic CAN、87.5% 采样点。' + 'CAN1 为 500 kbit/s,CAN2 为 250 kbit/s,均为 Classic CAN、87.5% 采样点。' + '两路保留相同的接收 ID、解码与任务发送功能,MCU 不在两路之间转发原始报文。' '节点 AMI 为仪表 MCU,VCU 为任务请求的逻辑接收者,SDC_ACQ_DAC 和 BMS 为数据源。', '', + '| 端口 | 速率 | RX / TX 引脚 | DBC 文件 |', + '| --- | --- | --- | --- |', + '| CAN1 | 500 kbit/s | PA11 / PA12 | [AMI.dbc](../AMI.dbc) |', + '| CAN2 | 250 kbit/s | PB0 / PB1 | [AMI_CAN2_250k.dbc](../AMI_CAN2_250k.dbc) |', '', + 'DBC 的 `Baudrate` / `AMIPort` 分别标注所属总线。每份 DBC 均含 10 条报文、33 个信号;' + '同一份报文表适用于两路。CAN 工具必须按接入端口设置速率,导入 DBC 不一定自动改硬件速率。' + '例如 SDC 板保持 500 kbit/s 时接 CAN1;BMS 节点配置为 250 kbit/s 时接 CAN2。', '', + 'FDCAN 时钟 64 MHz,时钟分频为 1;NominalPrescaler 为 CAN1=8、CAN2=16,' + '两路均使用 Sync=1、TimeSeg1=13、TimeSeg2=2、SJW=1。' + '速率 = 64 MHz / Prescaler / (1+13+2);采样点 = (1+13)/16 = 87.5%。', '', '本 DBC 包含 AMI 唯一发送的 `0x300` 任务请求,以及 AMI 当前识别的 SDC / BMS 输入。' 'SDC `0x6A3` DAC 控制、`0x6A5` ASSI 控制、BMS 其他电芯/故障字段不属于此接口子集。' '没有定义电机温度、逆变器温度、扭矩、标定后的车速、AMI 周期心跳或 VCU 执行反馈。' @@ -123,11 +149,13 @@ def render(): '标准/扩展格式、33 个信号、发送/接收节点、SDC 周期、24 个已知报文解码、' '六个任务号与计数边界编码、大端偏置电流、无效温度枚举、全负温度和截短 DLC。' '已安装并验证 cantools 44.1.0,接口参考 [cantools 官方文档](https://cantools.readthedocs.io/en/latest/)。', '', - '上述是静态及软件编解码验证。之前 CAN 盒 -> 实物 AMI CAN1 / MCU -> USART2 -> COM4 ' + '上述是静态及软件编解码验证,另校验两份 DBC 的速率、相同信号布局及源码 / CubeMX 位时序一致。' + 'v2.1 的 CAN2 250 kbit/s 固件已编译,尚未烧录或实物验证。' + '之前 v2.0 的 CAN 盒 -> 实物 AMI CAN1 / MCU -> USART2 -> COM4 ' '-> 官方 HMI 调试器的实际更新和六个任务回传见 [联调报告](SDC_BMS联调报告.md)。' '物理串口屏、CAN2 接线、真实 SDC/BMS 节点和车辆执行动作尚未实测;' '文档生成和 DBC 解析不替代这些测试。', '', - '修改 AMI.dbc 后运行 `python scripts/export_dbc_docs.py` 更新本文;' + '修改 AMI.dbc 后运行 `python scripts/export_dbc_docs.py` 更新 CAN2 DBC 和本文;' '固件字节布局、DBC 与此文档需同时保持一致。', '', ] return '\n'.join(lines) @@ -140,10 +168,12 @@ def main(): text = render() if args.check: assert OUTPUT.read_text(encoding='utf-8') == text, 'DBC document is stale; run export_dbc_docs.py' - print('DBC documentation matches AMI.dbc') + assert CAN2_OUTPUT.read_text(encoding='ascii') == can2_dbc_text(), 'CAN2 DBC is stale' + print('DBC documentation and CAN2 DBC match AMI.dbc') else: + CAN2_OUTPUT.write_text(can2_dbc_text(), encoding='ascii', newline='\n') OUTPUT.write_text(text, encoding='utf-8', newline='\n') - print('Generated docs/AMI_CAN_DBC说明.md') + print('Generated CAN2 DBC and docs/AMI_CAN_DBC说明.md') if __name__ == '__main__': diff --git a/scripts/verify_dbc.py b/scripts/verify_dbc.py index 26a34b3..be311db 100644 --- a/scripts/verify_dbc.py +++ b/scripts/verify_dbc.py @@ -10,11 +10,48 @@ from pathlib import Path import re import cantools +from export_dbc_docs import can2_dbc_text ROOT = Path(__file__).resolve().parents[1] +def verify_bit_timing(): + ioc = dict(line.split('=', 1) for line in + (ROOT / 'firmware/AMI_Controller.ioc').read_text().splitlines() if '=' in line) + source = (ROOT / 'firmware/Core/Src/fdcan.c').read_text() + clock_source = (ROOT / 'firmware/Core/Src/main.c').read_text() + for setting in ('RCC_HSI_DIV1', 'RCC_PLLM_DIV1', 'RCC_PLLR_DIV4', 'RCC_HCLK_DIV1'): + assert setting in clock_source + assert re.search(r'PLL\.PLLN\s*=\s*16;', clock_source) + assert 'RCC_FDCANCLKSOURCE_PCLK1' in source + clock = int(ioc['RCC.FDCANFreq_Value']) + assert clock == 16000000 * 16 // 4 == int(ioc['RCC.APBFreq_Value']) + result = {} + for port, expected_rate, expected_prescaler in ((1, 500000, 8), (2, 250000, 16)): + def value(field): + found = re.search(rf'hfdcan{port}\.Init\.{field}\s*=\s*(\w+);', source) + assert found, field + return found.group(1) + + assert value('ClockDivider') == 'FDCAN_CLOCK_DIV1' + assert value('FrameFormat') == 'FDCAN_FRAME_CLASSIC' + prescaler, seg1, seg2, sjw = (int(value(field)) for field in + ('NominalPrescaler', 'NominalTimeSeg1', + 'NominalTimeSeg2', 'NominalSyncJumpWidth')) + assert (prescaler, seg1, seg2, sjw) == (expected_prescaler, 13, 2, 1) + rate = clock // prescaler // (1 + seg1 + seg2) + near((1 + seg1) / (1 + seg1 + seg2), 0.875) + assert rate == expected_rate == int(ioc[f'FDCAN{port}.CalculateBaudRateNominal']) + for field in ('NominalPrescaler', 'NominalTimeSeg1', 'NominalTimeSeg2', + 'DataPrescaler', 'DataTimeSeg1', 'DataTimeSeg2'): + assert int(value(field)) == int(ioc[f'FDCAN{port}.{field}']) + near(float(ioc[f'FDCAN{port}.CalculateTimeBitNominal']), 1e9 / rate) + near(float(ioc[f'FDCAN{port}.CalculateTimeQuantumNominal']), 1e9 * prescaler / clock) + result[f'CAN{port}'] = rate + return result + + def near(actual, expected): assert math.isclose(actual, expected, rel_tol=0, abs_tol=1e-8), (actual, expected) @@ -24,6 +61,12 @@ def main(): parser.add_argument('--sdc-dbc', type=Path) args = parser.parse_args() db = cantools.database.load_file(ROOT / 'AMI.dbc', strict=True) + db2 = cantools.database.load_file(ROOT / 'AMI_CAN2_250k.dbc', strict=True) + assert (ROOT / 'AMI_CAN2_250k.dbc').read_text(encoding='ascii') == can2_dbc_text() + assert db2.dbc.attributes['Baudrate'].value == 250000 + assert db.dbc.attributes['AMIPort'].value == 'CAN1' + assert db2.dbc.attributes['AMIPort'].value == 'CAN2' + bitrates = verify_bit_timing() header = (ROOT / 'firmware/Core/Inc/ami_protocol.h').read_text(encoding='utf-8') identifiers = {int(value, 16) for value in re.findall( r'^#define\s+AMI_CAN_ID_\w+\s+(0x[\dA-Fa-f]+)', header, re.MULTILINE)} @@ -58,6 +101,7 @@ def main(): assert task == {'Protocol_Version':1,'Task_ID':2,'Request_Sequence':0, 'Request_Source':1,'MCU_Uptime':1000} request = db.get_message_by_frame_id(0x300) + request2 = db2.get_message_by_frame_id(0x300) assert request.encode(task) == bytes.fromhex('01 02 00 01 E8 03 00 00') for task_id in range(1,7): for seq in (0,255): @@ -65,6 +109,8 @@ def main(): payload=request.encode(data) assert payload == bytes([1,task_id,seq,1,255,255,255,255]) assert request.decode(payload,decode_choices=False) == data + assert request2.encode(data) == payload + assert request2.decode(payload,decode_choices=False) == data assert set(request.get_signal_by_name('Task_ID').choices) == set(range(1,7)) for raw, volts in [('08 20',8.2),('0C 30',12.3),('88 31',12.68),('A4 38',14.5),('FF FF',65.535)]: @@ -137,8 +183,16 @@ def main(): assert all(getattr(a,key)==getattr(b,key) for key in fields),(ident,a,b) source_check=True + for check in checks: + ident = int(check['id'], 16) + payload = bytes.fromhex(check['data']) + for decode_choices in (False, True): + assert db.decode_message(ident, payload, decode_choices=decode_choices) == \ + db2.decode_message(ident, payload, decode_choices=decode_choices) print(json.dumps({'result':'passed','messages':len(db.messages),'signals':33, 'known_payload_checks':len(checks),'all_task_ids_and_counter_edges':True, + 'ports_bitrate':bitrates,'both_dbc_layouts_and_payloads_match':True, + 'firmware_and_ioc_bit_timing_match':True, 'firmware_ids_match':True,'sdc_source_layout_match':source_check, 'cantools_version':cantools.__version__},indent=2))