24L01+带大数据包地ACK,用于双向传输.pdfVIP

  • 6
  • 0
  • 约2万字
  • 约 25页
  • 2020-06-25 发布于天津
  • 举报
实用文案 发现网上关于 24L01 带数据包的 ACK 介绍的比较少,自己之前做四轴的时候想说用 24L01 做双向通讯,但是对于频繁切换发送、接收模式很是麻烦,时间调的不好很容易造 成通讯失败,后来想到 24L01 的带数据包的 ACK 做双向通讯,在网上找了资料,但是就只 做了简单介绍, 没有介绍用的时候是怎么实现, 下面我就对我使用的过程做一个总结, 在附 上测试程序 (C51 ),本人热衷于使用 STC 单片机做东西, 四轴也是用 STC 单片机来做的控 制板,飞的也还行。对于初学者来讲, STC 单片机的程序看起来也比较容易看得懂, 对于双 向传输,我看过 STM32 的程序,想要移植到 51 上,但是对于发送接收部分没有详细的注 释,所以刚开始也是一头雾水,找半天都找不到什么时候吧带数据的 ACK 包送入缓存,所 以也就放弃了, 但是我觉得初始化部分写的比较好, 所以也就移植了部分程序, 好了不多说, 下面开始将原理: 带数据包的 ACK 应答传输,有的人说只能用在 24L01+ 上,没有 + 的用不了,然而我 刚好只有带 + 的,没带 + 的用不用的了这个我就不知道了,但是我看过没带 + 的芯片手册, 并没有看到有关带数据包的 ACK 的介绍, 然后又看了带 + 的芯片手册, 在带 + 的手册上发现 有相关带数据包的 ACK 的介绍,所以我也认为 ACK 要能带数据包, 只能用在有 + 的芯片上。 利用这个 ACK 做数据传输,首先要配置正确,对于配置,你们网上找找,也能找到, 我也在这里直接复制粘贴别人的说法: 1,需要设置成为可变长度的接收与发送 2 ,需要将接收数据的 ACK 使能 3 ,由于 ACK 带有数据因此自动重发的时间要改成 500 μS 4 ,将数据写入等待发送使用的是 W_ACK_PAYLOAD 命令 作为接收模式, 若要让 ACK 带上数据包, 那就得在接收到数据之前, 把数据包送到 ACK 标准文档 实用文案 发送缓存,将数据写入 W_ACK_PAYLOAD 这个地址里面,详细介绍如下 从这里可以看出, W_ACK_PAYLOAD 的地址为 0xA8-0xAD ,用哪个地址由你喜欢, 缓存字节数为 32 字节。 所以,初始化为接收模式之后,就先装载 ACK 包,然后在进入接收循环,每当接收到 发送端发送过来的数据,读取数据完毕,马上把 ACK 数据包再写进去,不写的话发送端就 接收不到带数据包的 ACK 。 作为发送端,在发送完数据之后立马就读取到 ACK 数据包了,我刚开始用的时候也是 犯傻, 怎么把 ACK 里面的数据提取出来, 想了半天, 后来也是灵光一现, 想着, 手册上说, 通道 0 是接收应答信号的,那收到的 ACK 数据包读取方式应该跟一般接收到的数据读取方 式是一样的, 所以我就尝试了一下, 果然成了, 能接收到数据了, 废话不多说, 我文采不好, 不想打这么多字了,下面直接附上程序: 以下是 .h 文件 /********************************************************************************* ********************************************************************/ 标

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档