使用STM32F103+CAN通信,多个同样的板子都挂载CAN总线上,同样的程序和功能;上位机监控整个总线通信。
当有个板子发出信息时,上位机如何知道是那个板子发出的?
我们知道CAN的帧ID有 11bit 和29 bit 两种,数据位也只有8字节。
STM32F103本身具备唯一ID,但长度是12字节(96位)。
如果取唯一ID中的4字节作为设备ID,有ID重复的风险,另外12字节的唯一ID也不知道规律,不知道取哪些字节合适;
想过找个字节数少点的唯一ID元件,也没有找到;
如果每个板子都启用前配置一个ID号,写入FLASH中,难度和方案都可以,就是增加了一配置工作(联线、写入、ID号的维护)
请各位高手给我出出主意,如何处理这个问题:上位机判断一帧数据是谁发出来的,谢谢啦! |