
6个ADC3个UARTCAN FD一颗MCU搞定工业多传感器网关前段时间接了一个工业多传感器采集网关的项目需求是采集6路模拟量温度、压力、流量等通过3路RS485/RS232接口连接不同协议的传感器再通过CAN FD组网上传到上位机。一开始方案是用一颗STM32F103做主控外挂一颗MCP2518FD做CAN FD通信。后来发现HC32F401B一颗芯片就能全干了直接砍掉了通信芯片BOM成本降了将近15块钱。今天分享一下这个方案的思路。传统双芯片方案的痛点传统方案很常见主控MCU负责ADC采集和UART通信外挂一颗CAN FD控制器比如MCP2518FD或TJA1051负责总线通信。问题在于第一SPI总线是瓶颈。MCP2518FD通过SPI连接主控SPI时钟一般跑20-40MHz实际吞吐量受限。当传感器数据量大的时候SPI总线容易成为通信瓶颈。第二BOM成本高。多一颗芯片就多一颗芯片的钱加上外围电路、PCB面积、焊接成本算下来不便宜。第三调试复杂度翻倍。两颗芯片之间要处理SPI通信、中断同步、错误恢复出了问题排查起来很麻烦。HC32F401B单芯片方案HC32F401B是芯圣电子的Cortex-M4F内核32位MCU168MHz主频关键是它集成了6路ADC、3个UART和CAN FD控制器。对于这个多传感器网关来说简直是量身定制。系统框图大致是这样的6路模拟传感器信号4-20mA或0-10V经过信号调理后直接接入6路ADC通道3路数字传感器Modbus RTU、自定义协议等分别接入3路UARTCAN FD总线直连网关上位机。整个系统就一颗HC32F401B外围只需要电源、晶振和接口保护电路。ADC方面HC32F401B的12位ADC支持最高1MSPS采样率6路扫描模式下每路也能达到上百kHz完全满足工业传感器的采集需求。我实测过同时采集6路热电偶信号切换通道后稳定时间约5μs精度满足±0.1%的要求。UART方面3个独立UART可以分别配置不同的波特率和协议一路跑Modbus RTU9600bps一路跑自定义私有协议115200bps一路跑调试日志互不干扰。CAN FD就更不用说了直接省掉了SPI通信环节数据从ADC采集到CAN FD发送中间只有软件处理的延迟没有总线转换的开销。实测从ADC采样完成到CAN FD帧发出延迟约120μs比双芯片方案快了将近一倍。BOM对比单芯片方案的BOM清单HC32F401B约8元 电源LDO约1元 12MHz晶振约0.5元 接口保护器件若干。双芯片方案多了一颗CAN FD控制器约5-8元 SPI电平匹配 额外的PCB面积约3-5元制造成本。算下来一颗芯片省12-15块钱对于批量出货的工业产品来说这个成本差距还是很可观的。写在最后如果你也在做类似的多传感器采集网关而且需要CAN FD组网真的可以看看HC32F401B这种高集成度的国产32位MCU。一颗芯片搞定ADC采集、UART通信和CAN FD组网方案简洁成本可控调试也方便。工业场景对可靠性要求高这颗芯片-40°C到105°C的工业级温度范围也完全够用。如有需求可以加微信链接