
BK3431Q Bk3432 bootloader烧录器
简介
利用esp32烧录 BK3431Q Bk3432的 bootloader从而使芯片可以通过串口更新固件
简介:利用esp32烧录 BK3431Q Bk3432的 bootloader从而使芯片可以通过串口更新固件开源协议
:GPL 3.0
描述
苦于esp32-wroom待机功耗过高,尝试使用博通系列的BK3431Q和Bk3432芯片,bk3432为Bk3431q的降级版本。开发用的sdk及相关文档可从 https://gitee.com/shenzhen_bo_core 下载。
bk3431q的固件主要由三部分组成:boot + stack + app,其中:
• bk3435_ble_app_merge_crc.bin = boot + stack + app,仅支持spi烧录
• bk3435_ble_app_oad.bin = app,支持uart烧录 app带校验烧录地址0x20010
• bk3435_ble_app_stack_oad.bin = stack + app,支持uart烧录 校验+stack+app烧录地址0x20e0
其中stack为厂家提供的蓝牙栈无法修改,stack 和app前部为crc验证信息,crc不正确代码将无法运行。Bk3432固件结构相似烧录地址不同,烧录时进行crc验证咋,不写入flash。
不同于esp32系列可直接通过串口进行下载固件,BK343x需要先通过专用下载器先烧录boot后才可通过串口下载。烧录过程可参考涂鸦智能相关模块文档(https://developer.tuya.com/cn/docs/iot/bk3431q-on-board-program-application-development-manual?id=Ka2slgvjl0ym7)
下载器淘宝购买成本约70元(下图上),通过逻辑分析仪抓包分析,下载器通过spi协议擦写芯片内部flash,为了降低学习成本用esp32来实现boot的烧录(下图下),之后便可通过ch340等芯片更新app固件。烧录口采用和厂家相同的2X5双排可焊接牛角座或杜邦针。无需打板此工程使用其他esp32开发板或自行移植其他芯片均可。
为方便使用boot固件储存于esp32的SPIFFS分区中,事先需先通过插件或模拟ftp协议等方法将boot文件上传至SPIFFS分区中。或直接烧录打包好的esp32固件(sdk版本为3431Q V3A_110F和bk3432 V17_0C0A),ardunio分区设置为NO OTA(2M APP/2MSPIFFS).不同sdk的版本的boot大小会不一样使用时请注意
功能部分函数为
void earse31q(); //擦除全部flash io0长按
void earse32(); //擦除全部flash io14长按
void writebk31q(); //将固件写入bk3431q 默认io0双击
void writebk32();//将固件写入bk3432 io14双击
引脚连接参加原理图
/*BK3431q--esp32
P05--miso--22 P04--mosi--21
P06--clk--18 P02--cs--19
GND
vcc--VCC--13 rst--RST--17
P03--wp--16 P07--rs--4
*/
/*BK3432--esp32
P05--miso--22 P04--mosi--21
P07--clk--18 P06--Cs--19
GND
vcc--VCC--13 rst--RST--17
nc--wp--16 nc--rs--4
*/
使用方法
1将固件(esp32 down.bin)烧录至esp32 0x0地址
2连接esp32与bk3431q或bk3432
3双击io0(bk3431q)或io14(bk3432),烧录有概率失败(没有做回传校验),一般再次烧录即可
设计图
BOM
ID | Name | Designator | Footprint | Quantity |
---|---|---|---|---|
1 | 0.1u | C1 | C0603 | 1 |
2 | 0.1u | C6 | C0603 | 1 |
3 | 220u | C14,C23 | CASE-B_3528 | 2 |
4 | 1u | C15 | C0603 | 1 |
5 | 1u | C18 | C0603 | 1 |

评论