找回密码
 立即注册
楼主: admin

CAN总线在线升级例程发布,视频演示,车规

[复制链接]

1

主题

5

回帖

64

积分

注册会员

积分
64
发表于 2025-9-30 00:22:31 | 显示全部楼层
青青*** 发表于 2025-1-6 16:09
可以提供上位机应用程序的源代码吗?下面自己实现想参考下
用户 AP 代码原本位于 FF:0000H~FF:0002H 的复 ...

这个问题有答案了吗,我现在也是想按自己的数据协议更新app,也是卡在文档中的这句话上面。
回复

使用道具 举报 送花

5

主题

26

回帖

1117

积分

金牌会员

积分
1117
发表于 2025-11-11 14:15:27 | 显示全部楼层
声音太小了,听不清,CAN升级是很有必要的
回复

使用道具 举报 送花

已绑定手机

6

主题

52

回帖

902

积分

高级会员

积分
902
发表于 2025-11-14 08:50:15 | 显示全部楼层
LIN升级是否同样适用
回复

使用道具 举报 送花

已绑定手机

41

主题

390

回帖

2170

积分

金牌会员

积分
2170
发表于 2025-12-11 08:41:20 | 显示全部楼层
有没有用U盘升级程序的功能

点评

同求  发表于 2026-1-4 14:53
纸上得到终觉浅,绝知此事要躬行。
回复

使用道具 举报 送花

1

主题

17

回帖

623

积分

高级会员

积分
623
发表于 2025-12-11 09:33:57 | 显示全部楼层
回复

使用道具 举报 送花

0

主题

6

回帖

88

积分

注册会员

积分
88
发表于 2026-8-17 10:46:02 来自手机 | 显示全部楼层
如果总线上有多台STC芯片的设备,通过CAN升级的话,怎么区分设备?

点评

我已经获取了足够的资料来回答这个问题。让我总结一下关于 CAN 总线上多设备区分的完整方案。 根据手册信息: CAN验收过滤器(ACR/AMR)——这是 STC32G CAN 控制器用于区分不同节点的核心机制 全球唯一ID号(CHIPI  详情 回复 发表于 2026-8-17 13:36
回复

使用道具 举报 送花

0

主题

6

回帖

88

积分

注册会员

积分
88
发表于 2026-8-17 10:50:25 来自手机 | 显示全部楼层
还有,如果不用官方提供的上位机,用周立功的CAN盒和CANTEST软件通过发送文件方式,能否实现升级?
回复

使用道具 举报 送花

50

主题

391

回帖

3086

积分

超级版主

积分
3086
发表于 2026-8-17 13:36:18 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=228995&ptid=8410][color=#999999]Eugen 发表于 2026-8-17 10:46[/color][/url][/size] 如果总线上有多台STC芯片的设备,通过CAN升级的话,怎么区分设备?[/quote]

我已经获取了足够的资料来回答这个问题。让我总结一下关于 CAN 总线上多设备区分的完整方案。

根据手册信息:

  1. CAN验收过滤器(ACR/AMR)——这是 STC32G CAN 控制器用于区分不同节点的核心机制
  2. 全球唯一ID号(CHIPID)——每颗 STC32G12K128 芯片都烧录了全球唯一的7字节ID号
  3. CAN 模式寄存器 MR 的 AFM 位选择单/双过滤器

现在我有了依据,可以给出完善、有依据的回答。


多台 STC 芯片 CAN 总线设备如何区分

这是一个非常典型的现场总线应用问题。STC32G 系列内置的 CAN 控制器(兼容 CAN2.0A/B)本身就为多节点寻址提供了完整的硬件支撑。区分设备可以分两个层面来考虑,我分别说明。


一、CAN 控制器的硬件过滤器机制(最核心的区分手段)

STC32G 系列 CAN 控制器内置验收过滤器,通过**验收代码寄存器(ACR)与验收屏蔽寄存器(AMR)**实现报文的硬件级筛选。手册原文明确说明:

"在验收过滤器的帮助下 CAN 控制器能够允许 RXFIFO 只接收同识别码和验收过滤器中预设值相一致的信息。"

"滤波的规则是:每一位验收屏蔽分别对应每一位验收代码,当该位验收屏蔽位为'1'的时候(即设为无关),接收的相应帧 ID 位无论是否和相应的验收代码位相同均会表示为接收;当验收屏蔽位为'0'的时候(即设为相关),只有相应的帧 ID 位和相应的验收代码位值相同的情况才会表示为接收。"

这里的关键是 CAN 报文标识符(ID):

1. 利用报文 ID 区分节点

CAN 报文帧头带有 11 位(标准帧)或 29 位(扩展帧)标识符。在多设备升级场景中,最常用、最可靠的区分方法是把节点地址编入报文 ID。例如:

  • 把 ID 的高若干位作为"地址位",作为该节点唯一的"身份标识";
  • 每个节点在初始化时,通过 ACR 设置自己的"目标 ID",用 AMR 屏蔽掉其他位;
  • 这样只有地址匹配的节点才会通过硬件过滤器接收升级数据,其他节点自动丢弃。

举例(标准帧 11 位 ID,高 4 位作为节点地址):

  • 节点1地址 = 0x1,节点2地址 = 0x2,…… 节点n地址 = 0xN
  • 升级主机发送 ID = 0x1xxxx 的帧,只有配置了 ID=0x1 的节点接收
  • 通过修改 ACR(验收代码 = 目标地址)和 AMR(屏蔽 = 0xF00,即只比较高4位地址位),即可让特定节点接收

2. 单过滤器 / 双过滤器模式

手册说明 MR 寄存器的 AFM 位(MR.0)选择滤波方式:

"滤波的方式有两种,由模式寄存器中的 AFM(MR.0)位选择:单过滤器模式(AFM 位是 1)、双过滤器模式(AFM 位是 0)。"

  • 单过滤器模式:4 字节长过滤器(32 位),可同时过滤 ID 和数据字节,适合复杂寻址
  • 双过滤器模式:两个短过滤器,报文通过任意一个即接收,适合同时监听多个地址(如本节点地址 + 广播地址)

二、利用"全球唯一 ID 号"做身份校验(防误升级/安全加密)

手册《存储器,在哪存储重要参数,全球唯一ID号CHIPID》章节明确指出,STC32G12K128 系列芯片内置了只读特殊功能寄存器 CHIPID,其中包含 7 字节全球唯一 ID 号:

"STC32G 系列单片机内部的只读特殊功能寄存器 CHIPID 中保存有与芯片相关的一些特殊参数,包括:全球唯一 ID 号……在用户程序中只能读取 CHIPID 中的内容,不可修改。使用 CHIPID 中的数据对用户程序进行加密是 STC 官方推荐的最优方案。"

ID 号组成(手册《CHIP之全球唯一ID号解读》):

  • [CHIPID0, CHIPID1]:16 位 MCU ID,区分不同单片机型号
  • [CHIPID2, CHIPID3]:16 位测试机台编号
  • [CHIPID4, CHIPID5, CHIPID6]:24 位测试流水编号

在 CAN 升级中的应用:由于 CAN 报文 ID 的地址位是"软件可配置"的,存在多个设备地址冲突的风险。而全球唯一 ID 号是芯片出厂固化的、无法修改的。因此建议:

  • 用报文 ID 做"硬件地址过滤"(快速筛选)
  • 用全球唯一 ID 号做"身份二次确认"(发送升级帧时附带目标 ID 号,或在握手阶段让节点上报自己的 ID 号),防止误升级到错误设备

三、完整的 CAN 在线升级架构建议

结合手册《CAN总线数据帧发送缓存(TXBUFn)》《CAN总线数据帧接收缓存(RXBUFn)》以及验收过滤器,我给出一个常用的多设备 CAN 升级流程:

升级主机(PC/CAN卡)              总线                    各设备节点(每颗STC32G)
    │                                                          │
    │ --- 广播"发现设备"帧(广播ID) --------------------> 所有节点
    │                                                          │ 各节点读到自己的
    │ <--- 各节点上报"唯一ID号+当前版本" ------------ 地址冲突检测
    │                                                          │
    │ --- 点名"设备A"进入升级模式(ID=设备A地址) ------> 仅A节点通过过滤器
    │                                                          │ A节点响应,其余节点忽略
    │ --- 逐帧发送固件数据(ID=设备A地址+帧序号) ------> 仅A节点接收
    │                                                          │
    │ --- 发送"校验/重启"命令(ID=设备A地址) ----------> A节点校验、IAP写Flash、复位

几点关键说明:

  1. 广播地址:可把某个 ID 保留为广播地址,通过 AMR 让所有节点都能接收,用于"发现设备"和"群发升级开始/结束"指令。
  2. 节点地址配置:建议在上位机或出厂时给每台设备分配唯一的 CAN ID 地址,可存储在 EEPROM 中,便于后期管理。
  3. IAP 升级:STC32G 支持在用户程序中通过 CAN 接收新固件数据,再通过 IAP 写入 Flash。手册《应用注意事项》附录中有"运行用户程序时收到用户命令后自动启动 ISP 下载"的通用方案说明(该方案主要用于串口/USB,CAN 升级时把数据源换成 CAN 接收即可)。升级完成后可通过 IAP_CONTR 软复位重启运行新程序。
  4. 防冲突:同一时刻只"点名"一台设备升级,避免多台同时写 Flash。建议升级前由上位机统一分配、逐一升级。

四、小结(直接回答你的问题)

区分手段 依据(手册章节) 作用
报文 ID 地址过滤 CAN总线章节 - 验收过滤器(ACR/AMR) 硬件级快速筛选目标节点,是区分设备最核心的手段
全球唯一 ID 号 存储器章节 - CHIPID 出厂固化、无法修改,用于二次身份确认与防误升级
单/双过滤器模式 CAN 模式寄存器 MR 的 AFM 位 灵活配置:单过滤器做精确过滤,双过滤器可同时匹配多个 ID(如本机地址+广播)

总结:最直接的区分方法是为每台设备分配唯一的 CAN 报文 ID 地址,通过 CAN 控制器的验收过滤器(ACR/AMR)实现硬件级自动筛选。同时结合 STC32G 每颗芯片固化的**全球唯一 ID 号(CHIPID)**做二次身份校验,防止误升级或地址冲突。这两者配合,即可安全可靠地在同一 CAN 总线上对多台 STC 设备进行在线升级。


如果你需要,我可以进一步给出:

  1. CAN 初始化 + 验收过滤器配置的具体代码(含 ACR/AMR 设置、波特率 BTR0/BTR1 配置)
  2. 基于 CHIPID 的节点身份上报 + 防误升级完整流程代码
  3. CAN 多节点升级协议(帧格式定义、发现/点名/数据/校验/重启等命令定义)

请告诉我需要哪一部分,我按规范输出可编译的代码。


🔍 搜索 "STC CAN升级 设备区分 总线多设备"

📌 相关论坛讨论

  1. CAN总线在线升级例程发布,视频演示,车规
  2. STC单片机在包装机械设备的应用,STC8H1K17-36I-TSSOP20
  3. 学习stc32g

⏱️ 查找用时 11.9s | 总回答用时 32.3s

QQ:3398500488
微信号:18106296592(小刘)
回复

使用道具 举报 送花

50

主题

391

回帖

3086

积分

超级版主

积分
3086
发表于 2026-8-17 13:42:18 | 显示全部楼层
STC-ISP最新版软件,AiCube-ISP V6.97 版内置:
STC 【AiCube】:图形化配置各功能模块外设,自动生成程序;
STC 【AI 助手】:按输入的要求,自动生成程序,
或排查您程序的错误。

STC 【AI 助手】,已加载 STC全系列MCU专业技术手册。
help.stcaimcu.com
可以帮您:
- 回答STC技术手册中的技术问题
- 自动生成您需要的通用MCU程序
- 自动高效排查您程序中的错误

QQ:3398500488
微信号:18106296592(小刘)
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-7 11:28 , Processed in 0.075176 second(s), 88 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表