1.我想以快速速率(2-5分钟)(8.7kb / s-3.5kb / s)打电话给1MB闪存的内容。做这个的最好方式是什么?
2.我尝试了使用BLE_APP_PERITELAL,其中我实现了TIMER0以在每3ms(值600)时发送16B的通知包。每次使用SPI I读取闪存的256B,我创建了16B的数据包。使用手机,每次都有更改为订阅通知时,我将数据推向表格,然后将表保存到TXT。
问题是,TXT的一些16B字是错误的(例如,65536的30个)。有些是重新排序的,有些则具有稍后数据包的错误值。你能帮我解决这个问题吗?
这些少数例子:
a)闪存值:
E0E1E2E3E4E5E6E7E8E9EAEBECEDEEF
f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
000102030405060708090a0b0c0a0b0c0d0e0f.
TXT值:
E0E1E2E3E4E5E6E7E8E9EAEBECEDEEF
000102030405060708090a0b0c0a0b0c0d0e0f.
000102030405060708090a0b0c0a0b0c0d0e0f.
b)闪存值:
707172737475767778797a7b7c7d7e7f
80818283848586878898886878898886878898886878898A8B83884F
909192939495969798999896979899A9B9C9D9E9F
a0a1a2a3a4a5a6a7a8a9aaabacaeaf
b0b1b2b4b5b6b7b8b9babbbcbdbebf.
C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF.
TXT值:
707172737475767778797a7b7c7d7e7f
b0b1b2b4b5b6b7b8b9babbbcbdbebf.
b0b1b2b4b5b6b7b8b9babbbcbdbebf.
b0b1b2b4b5b6b7b8b9babbbcbdbebf.
C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF.
C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF.
嗨gvarna01,
谢谢你的问题在线。让我检查你的查询,我会尽快回复你。
谢谢,PM_DIALOG.
嗨gvarna01,
我将需要一些额外的澄清您在申请中所做的操作。您提到创建数据包,每个数据包包含16个字节/所以,您将在定时器到期时发送每个数据包。我的假设是否正确?
您是否可以使用BLE嗅探器才能检查通过空中传输的数据包?
谢谢,PM_DIALOG.
是的,我在Timer0到期时发送每个数据包,其中值为750(3.8ms)。我也使用了更高的1000(5ms),虽然一些数据包是错误的,即使使用不同的电话(android)。我没有嗅探器。相反,我启用了蓝牙HCI Snoop登录手机。您可以看到附加的照片显示错误数据包。你可以复制这个问题吗?
然后,我设法将一些代码进行协商以协商MTU值,以便发送4倍更大的重组数据包(64字节),并以较低的速度下的4倍(TIMER0值= 3000,15ms)发送每个数据包。我尝试了三次,发送1MB没有数据包错误。
我曾经使用这些设置以防止内存分配问题:#define msg_heap_sz 4096 #define non_ret_heap_sz 4096
嗨gvarna01,
您能否分享您使用的代码片段,以便向手机发送通知?我会尝试复制它。
谢谢,PM_DIALOG.