当前位置: 首页 > news >正文

通过串口烧录DA14531MOD内封的SPI FLASH

1. 综述

DA14531MOD内置一颗1MB容量的SPI FLASH用于存储DA14531的固件。DA14531芯片没有内部ROM,启动时从外部总线或内部32KB大小的OTP加载程序到RAM中运行。启动方式请参考:

https://lpccs-docs.renesas.com/DA14535/AN-B-072-DA14531-Booting-from-serial-interfaces/Booting/Booting.html

对于DA14531MOD来说,SPI接口已经连接了模块内封的SPI FLASH,如果SPI FLASH中存在可启动的程序且OTP中没有特殊配置的情况下模块加载并运行该程序。

除此之外,在模块外引出的引脚中只能使用引脚P0_51-wire UART接口进行总线启动。在官方文档的第7小节介绍了从串口总线中启动的通信协议。

对内封SPI FLASH进行烧录有两种方法:

  1. 使用JLink

  2. 使用1-wire UART

官方工具SmartSnippets™ Toolbox支持上述两种方式,具体操作方式请阅读官方文档UM-B-083。不论是哪一种方法基本流程是相同的,上位机首先通过驱动JLink或串口上传一个支持编程外部FLASH的烧录程序到芯片然后复位。当烧录程序运行后,通过通讯接口(驱动JLink直接读写RAM/1-wire UART)下发命令给烧录程序完成外部FLASH的烧录。

官方工具支持命令行调用,一般情况下可以满足生产自动化烧录的需求。本文主要描述如何在不依赖官方工具的前提下通过1-wire UART方式烧录模块内封的SPI FLASH

2. 前期准备

官方提供了支持烧录外部FLASH的源码以及预编译的程序,分别位于:

  • 源码:SDK_PATH/utilities/flash_programmer

  • 预编译程序:SDK_PATH/config/toolbox_resources/DA1453x/common

源码可用于参考通信协议或实现高级需求,只是烧录外部FLASH可以直接使用预编译程序。对于DA14531MOD来说,要使用的是flash_programmer_531.bin这个程序。在SmartSnippets™ Toolbox的安装目录中也可以找到同名文件,但和最新SDK中的不同,应该是SDK版本的原因。使用哪个都可以实现基本的烧录需求。

2.1. 单线串口

官方建议的连接方式是将常规串口的RX和TX引脚短接后串一个1K的电阻,再将串口和模块的J14(芯片P0_5)连接。由于短接后上位机发送的数据会同时被接收,所以实现上位机时需要过滤掉这些数据(例如官方工具就会自动过滤),或使用支持单线串口的设备作为上位机。

3. 烧录步骤

  1. 读取烧录程序flash_programmer_531.bin,在其末尾添加5个字节0x00 0x00 0x00 0x00 0x05构成SW code bytes(该步骤作用不明确,官方工具会附加这个5个字节)

  2. 通过1-wire UART启动:协议可参考官方文档

    ../_images/uart_boot.svg

    协议本身较为简单,需要注意的有3点

    • Checksum使用的算法是BCC校验算法(异或校验算法),使用初始值0,依次与SW code bytes的所有字节进行异或运算后得出。

    • 接收到芯片发出的0x02时需要尽快响应

    • 上位机确认Checksum后发送确认ACK0x06后,芯片将自动复位。下一步是与flash_programmer程序交互,如果上位机发送ACK后立即发送flash_programmer的命令可能会失败。此处需要延时一段时间。

  3. 使用ACTION_SPI_ID读取内封SPI FLASH ID(该步骤可选,但通过这个步骤可以初步判断SPI FLASH是否正常。官方工具通过该命令确认flash_programmer是否成功运行)

  4. 使用ACTION_SPI_GPIOS配置SPI GPIO

  5. 使用ACTION_SPI_READ读取当前FLASH中的内容(可选)

  6. 使用ACTION_SPI_ERASE擦除FLASH(可以选择整块擦除或ACTION_SPI_ERASE_BLOCK区域擦除,协议不同)

  7. 读取待烧录固件,并为固件添加8字节的头0x70 0x50 0x00 0x00 0x00 0x00 SIZE_1 SIZE_0,其中前6字节为固定值,后2字节为大端字节序的固件长度(不包括新添加的8字节头)。该固件头必须添加,只有包含该头时DA14531才会加载固件到RAM中运行。

  8. 使用ACTION_SPI_WRITE发送固件

  9. 再次读取FLASH内容,校验写入是否成功

  10. 发送复位命令ACTION_PLATFORM_RESET运行程序(可选)

3.1. flash_programmer协议

该程序所有通信协议遵守相同的结构:

index note
[0:1] payload length n
[2:5] payload crc
[6] payload[0] aka the action code
[7:n-2] payload[1]~payload[n-1]

其中负载字段至少包含1字节的命令码(action code)。负载长度和负载CRC均使用大端字节序。

CRC参数如下:

POLY: 0x04C11DB7
INIT: 0xFFFFFFFF
XOROUT: 0xFFFFFFFF
REFIN: enable
REFOUT: enable

上位机发送的请求依据命令码的不同在负载字段会扩展不同的固定格式,flash_programmer的响应主要有两种,附带数据的ACTION_CONTENTS和用作ACK的ACTION_OK。其余响应请参考源码。

index note
[0:1] payload length n
[2:5] payload crc
[6] ACTION_CONTENTS: 0x82
[7:n + 5] payload[1]~payload[n-1]
index note
[0:1] 1
[2:5] payload crc
[6] ACTION_OK: 0x83

ACTION_SPI_ID

  • 请求

    index note
    [0:1] 1
    [2:5] payload crc
    [6] 0x93
  • 成功响应

    index note
    [0:1] payload length 5
    [2:5] payload crc
    [6] ACTION_CONTENTS: 0x82
    [7:10] big-endian FLASH CHIP ID

ACTION_SPI_GPIOS

  • 请求

    index note
    [0:1] 9
    [2:5] payload crc
    [6] 0x95
    [7] spi CS gpio port
    [8] spi CS gpio pin
    [9] spi CLK gpio port
    [10] spi CLK gpio pin
    [11] spi MOSI gpio port
    [12] spi MOSI gpio pin
    [13] spi MISO gpio port
    [14] spi MISO gpio pin

    对于DA14531MOD的内封SPI FLASH来说,必须配置为:

    index note value
    [7] spi CS gpio port 0
    [8] spi CS gpio pin 1
    [9] spi CLK gpio port 0
    [10] spi CLK gpio pin 4
    [11] spi MOSI gpio port 0
    [12] spi MOSI gpio pin 0
    [13] spi MISO gpio port 0
    [14] spi MISO gpio pin 3
  • 成功响应 ACTION_OK

ACTION_SPI_READ

  • 请求

    index note
    [0:1] 7
    [2:5] payload crc
    [6] 0x90
    [7:10] start address (big-endian)
    [11:12] read length (big-endian)
  • 成功响应

    index note
    [0:1] read length + 1
    [2:5] payload crc
    [6] ACTION_CONTENTS: 0x82
    [7:read length + 6] data

ACTION_SPI_ERASE

  • 请求

    index note
    [0:1] 1
    [2:5] payload crc
    [6] 0x92
  • 成功响应 ACTION_OK

ACTION_SPI_WRITE

  • 请求

    index note
    [0:1] write length + 1
    [2:5] payload crc
    [6] 0x91
    [7:write length + 6] data
  • 成功响应 ACTION_OK

ACTION_PLATFORM_RESET

  • 请求

    index note
    [0:1] 1
    [2:5] payload crc
    [6] 0xC0
http://www.jsqmd.com/news/321394/

相关文章:

  • 2026年游泳池工程公司推荐:技术特性与质量指标横向对比,附专业排名
  • 2026年游泳池工程公司推荐:聚焦酒店与别墅场景评测,直击水质与安全核心痛点
  • 分析岩板供应商选哪个好,靠谱厂家大推荐
  • 2026美赛MCM/ICM B题:借助太空电梯系统建设月球殖民地附Matlab参考代码
  • CH585_USB实现绝对鼠标
  • 探讨保鲜冷库设计安装公司,如何选择合适的品牌
  • 知网AIGC检测不通过怎么办?毕业党避坑超全攻略
  • 2026年游泳池工程公司推荐:工程品质与长期维护评测,涵盖酒店与别墅场景痛点
  • 靠谱的冷链冷库设计安装公司有哪些,哪家性价比高
  • 广雪制冷冷库定制多少钱,这几家冷库公司值得推荐
  • 5款降AI率工具横评:嘎嘎降AI vs 比话降AI,谁更值得买
  • LangChain使用
  • 科瑞思作为高纯金属镱靶材厂家,口碑好不好?
  • 2026年服务好低烟无卤电力电缆企业,评测结果出炉,RVS电线,低烟无卤电力电缆品牌推荐榜
  • 说说全国联考培训,广州中科全程这样的专业机构怎能错过
  • 从Google打击IPIDEA住宅代理网络看:什么样的代理设施才是靠谱的?
  • 一维、二维和多维列联表的应用场景与实例分析
  • 探秘石墨烯来图定制,深圳烯牛实业等靠谱厂家排名情况
  • 2026年医药冷库设计安装实力公司推荐,专业服务与技术全解读
  • 第25篇 AGV RDS接口webapi文档查找方法
  • 2026年靠谱的医药冷库设计安装公司Top10,哪家值得选
  • 聊聊岩板制造厂口碑哪家好,分享高性价比企业
  • 想提升技能学习中医,江西中医专业师承班口碑排名
  • 等离子清洗机专业制造商哪家好,服务不错的工厂全梳理
  • 浏览器感染木马插件 访问overbridgenet.com恶意网站
  • 2026年江西中医师承学习院校费用揭秘,多少钱能学
  • 导师推荐!专科生必用TOP8AI论文软件测评
  • 2026年东莞港澳台联考课程推荐,费用怎么收?
  • 2025年国内专业的尘埃粒子计数器销售厂家排行,激光尘埃粒子计数器/尘埃粒子检测仪/台式粒子计数器供应商哪家强
  • 帝国CMS的HTML编辑器如何实现Word文档的跨平台无损发布?