sdk3.0.6
通过串口(P04,P05)烧写OTP(已经确保接线正常) 供电采用1.2v,曾经也用1.2v烧写过,otp完全没问题。
但现在通过SmartSnippet - OTP烧写页面,点击connect 之后,(该过程是将programmer_ES5.bin 通过串口烧写入 da14580,此时vpp 还没有接6.8V , 我们没有reset 引脚,采用断电上电的方式代替复位)
现象如下:
[INFO @16-09-09 16:04:33] Reset detected
[INFO @16-09-09 16:04:34] Successfully disconnected from port COM31.
[INFO @16-09-09 16:04:44] Successfully downloaded firmware file to the board. ,此时已经过去10s,貌似没有成功的烧写如da14580 ? 附件为两次烧写记录的log。
麻烦帮忙看下到底为什么?
(先前接线、烧写流程,整体都验证过是可以烧写的,不知道有没有哪里不正确,请指出,谢谢)。
此外有另外一个问题:
采用版本sdk 3.0.10
关于测试模式中晶振校准的问题:
晶振输出口默认为P05口,是否能将P04 P06 映射为(TX,RX)来通信?
修改 dk_apps\keil_projects\prod_test\prod_test 下的工程将tx ,rx 设置为p04,p06 ,然后直接通过jlink debug ,现象: 可以正常通信。
prodtest –p 41 xtrim en 可以从p05 检测到16M晶振
另外一种方式:
使用命令行通过jlink将dk_apps\keil_projects\prod_test\prod_test 工程生成的hex文件烧写入da14580,示例如下
SmartSnippets.exe -type booter -chip DA14580-01 -jtag 123456 -gpio P0_1 -uart P0_4 -file cust_prod_test_ES5.hex ,该hex 为修改tx rx 为p04,p06的固件。
prodtest –p 41 xtrim en 命令下发后,过一会儿得到返回值9(超时)。
请问:怎么用串口通过命令行直接烧写可用的 cust_prod_test_ES5.hex ?
这位仁兄你遇到的问题和我一样,期待dialog工程师的帮助!谢谢!
1.从log看,UART booting的过程没拿到长度信息,导致booting 失败。具体可以参考AN-B-001.pdf. 是不是UART IO上电压太低了?
2.“通过串口(P04,P05)烧写OTP(已经确保接线正常) 供电采用1.2v,曾经也用1.2v烧写过,otp完全没问题。”
这个不对啊,OTP的烧写没VPP上 6.8V是写不进去的。你确定写进去又读出来验证过吗?
3.UART引导的GPIO默认只能有4组选择。所以引导还是只能由P04 / P05开始。在代码下进去之后,利用01 FD 40 04 XX XX XX XX 去修改之后的UART TX/RX。其实就是调用底层的
的hci_change_uart_pins_cmd命令。Smartsnippets里面没看到直接可以修改的指令
Hi dialog:
关于1:采用1.2v供电,da14580的tx rx 电平为2.6 v左右,串口芯片采用的是3.0v供电,不知道这样是否可以,另外,如何解决IO口电平太低的问题(芯片供电最大不能超过2.0v最好不要超过1.8v)?
关于2:通过串口(P04,P05)烧写OTP(已经确保接线正常) 供电采用1.2v,曾经也用1.2v烧写过,otp完全没问题。”
这个不对啊,OTP的烧写没VPP上 6.8V是写不进去的。你确定写进去又读出来验证过吗?
上述所述的烧写仅仅只是指点击connect的时候发生的动作,实际并不是烧写OTP的内容,(接上6.8v 才能烧写otp,整个流程试过没问题)。
关于3:UART Booting的GPIO默认只能有4组选择。所以booting 还是只能由P04/P05开始。在代码下进去之后,利用01 FD 40 04 XX XX XX XX 去修改之后的UART TX/RX。其实就是调用底层的
的hci_change_uart_pins_cmd命令。Smartsnippets里面没看到直接可以修改的指令
booting 的时候是通过jlink烧写programmer_ES4.bin的,所以跟p04,p05没什么关系吧?(如果修改program_ES4.bin的源码 ---- 修改TX,RX IO口)那么 booting完之后通信接口(串口)应该就可以任意改变吧?