使用DA14580,我们用于将自定义数据写入OTP标题自定义字段(特别是在地址0x47F54和0x47F56处)。
在DA14585上,OTP更改和查看OTP标题的存储器映射,我看到以地址0x07F8F8FE20开始的客户特定字段(可用144个字节)。
以前我曾经读过使用的数据:
UINT8_T * OTP_MAJOR =(UINT8_T *)0x47F54;
UINT8_T * OTP_MINOR =(UINT8_T *)0x47F56;
memcpy(&beacon_data [major],otp_major,2);
memcpy(&beacon_data [minor],Otp_minor,2);
通过新的DA14585,我以为我只需要改变它:
UINT8_T * OTP_MAJOR =(UINT8_T *)0x07F8FE20;
uint8_t * otp_minor =(uint8_t *)0x07f8fe22;
memcpy(&beacon_data [major],otp_major,2);
memcpy(&beacon_data [minor],Otp_minor,2);
但是,当我这样做时,程序不再运行(它仍然编译)。我会尝试调试它在哪里失败,但如果我正在正确解释OTP映射,请告诉我。
谢谢,
设备:
我认为在DA14585中启用OTP与DA14580略有不同。我在Arch_System.c上找到了一个段读取BD地址,因此我修改它以使用自定义数据字段,以下代码工作,它不会崩溃了:
hw_otpc_init();
hw_otpc_manual_read_on(false);
memcpy(&beacon_data [major],(uint8_t *)otp_hdr_customer_field_addr,2);
memcpy(&beacon_data [minor],(uint8_t *)otp_hdr_customer_field_addr + 2,2);
hw_otpc_manual_read_off();
hw_otpc_close();
嗨DLO,
感谢您对社区的分享!是的,启用OTP是DA14585是DA4585的ITLTLE位不同。你是否设法解决了这次崩溃,或者需要骚动支持?
此外,在DA14585的情况下,无需6.8V编程电压,如DA14580中。有关更多信息,请参阅数据表。
谢谢,PM_DIALOG.
谢谢你检查PM,
崩溃是由于在阅读前没有正确启用OTP。Memcopy将崩溃,因为它无法访问内存位置。
干杯,
嗨DLO,
谢谢你的迹象。
问候,pm_dialog