tomzbj 发表于 2023-3-16 16:47:34

Ci24R1有人踩坑么?

感觉有点意思, 看寄存器基本是克隆NRF24L01, SOP8封装, 但是又说兼容BLE.

不知道本站有人玩过了么, 介绍点心得?

jingmeidz 发表于 2023-3-16 17:59:14

有坑,过不了无线相关认证,辐射超标

smallwood 发表于 2023-3-16 18:14:10

不能连续发射3组FIFO资料,后两组会丢失(SI24R1就没有这个问题)

tomzbj 发表于 2023-4-17 22:55:25

本帖最后由 tomzbj 于 2023-4-17 23:03 编辑

smallwood 发表于 2023-3-16 18:14
不能连续发射3组FIFO资料,后两组会丢失(SI24R1就没有这个问题)
(引用自3楼)

奇怪了, 我买了几个模块,和一对NRF24L01一起试, 用基本一样的程序 (只改了写CE脚的部分), 关AutoAck.

结果是NRF24L01发射, NRF24L01和Ci24R1都能收到;Ci24R1发射, NRF24L01和Ci24R1都收不到。
Ci24R1这边读status和fifo_status已经变成2e 11了...

几个模块怎么对调, 结果都一样,搞不懂了。

----------更新, 刚才用的是250KSPS, 改成1MSPS, 连续发几十次, 有时其他模块能收到一两次。我看看是不是增加的寄存器里要改改电容设置?

tomzbj 发表于 2023-4-17 23:21:16

tomzbj 发表于 2023-4-17 22:55
奇怪了, 我买了几个模块,和一对NRF24L01一起试, 用基本一样的程序 (只改了写CE脚的部分), 关AutoAck.
...
(引用自4楼)

继续, 改电容,无效
然后突然发现网上下载的程序里拉高CE之后居然是delay_ms(20), 要延时这么久?
直接无脑改成delay_us(50000), 然后再试, 居然正常了,和NRF24L01互发都没问题,连发三包, NRF24L01那边也能收到三包。
再改回delay_us(50), 又不行了。

这是bug么?感觉有点蠢啊。。。 难道它必须在CE拉高期间发完,中间不能有别的动作?

tomzbj 发表于 2023-4-17 23:31:15

再换成我自己做的Ci24R1模块, 也一切正常。
我这个还忘记把板厚改成1.0了, 按默认1.6厚度下单, 似乎近距离没啥影响, 可能远点儿就不行了。

然后把delay_us这里从50000改成5000,正常;改成500,不行了;再改成1000,还是不行;改成2000,又正常了。

我了个去!

jingmeidz 发表于 2023-4-18 12:49:46

tomzbj 发表于 2023-4-17 23:31
再换成我自己做的Ci24R1模块, 也一切正常。
我这个还忘记把板厚改成1.0了, 按默认1.6厚度下单, 似乎近距 ...
(引用自6楼)

看来是使能后需要一些延时等待芯片稳定

1a2b3c 发表于 2023-4-18 13:08:12

那就是需要2ms左右的启动时间呗。我没有通过这个,不知道你的芯片发完后是处于啥状态,是待机休眠还是RX模式。肯定模式切换是需要PLL稳定时间的,正常是需要百微秒以上的时间的,

tomzbj 发表于 2023-4-18 14:03:32

1a2b3c 发表于 2023-4-18 13:08
那就是需要2ms左右的启动时间呗。我没有通过这个,不知道你的芯片发完后是处于啥状态,是待机休眠还是RX模 ...
(引用自8楼)

NRF24L01没这要求啊,CE拉高10us就可以了……

mrf245 发表于 2023-4-18 14:10:27

国产一些兼容芯片的使用参数就是要和进口的有点区别,没办法,谁叫你用的是国产

tomzbj 发表于 2023-4-18 14:46:13

mrf245 发表于 2023-4-18 14:10
国产一些兼容芯片的使用参数就是要和进口的有点区别,没办法,谁叫你用的是国产 ...
(引用自10楼)

怀疑它就是在CE拉高期间发射, CE拉低就不发射了,所以之前250KBPS时完全不发射, 1MBPS时就偶尔能发射成功一次。
晚上再发长一点的包,微调CE延时试试。

dong889 发表于 2023-4-18 14:48:14

之前也遇到过Ci24R1发送不行,把发射功率11db改成7db才好使。后来没有用这个模块了

smallwood 发表于 2023-4-18 15:23:47

tomzbj 发表于 2023-4-17 22:55
奇怪了, 我买了几个模块,和一对NRF24L01一起试, 用基本一样的程序 (只改了写CE脚的部分), 关AutoAck.
...
(引用自4楼)

ci24r1虽然便宜和引脚少,但性能达不到si24r1(si24r1用起来和nrf24r1没分别),双向MOSI/int共用引脚如果用硬件SPI用起来也是非常麻烦。我已经彻底弃用了

tomzbj 发表于 2023-4-18 15:49:03

smallwood 发表于 2023-4-18 15:23
ci24r1虽然便宜和引脚少,但性能达不到si24r1(si24r1用起来和nrf24r1没分别),双向MOSI/int共用引脚如 ...
(引用自13楼)

嗯,我用硬件SPI没调通,改用软件SPI了。
不过后来一想,把硬件SPI的MOSI和MISO并联,MOSI设置成OD输出,MISO打开上拉电阻,这样是否可以呢?有空试试。缺点是MCU这边还是多用一个管脚。

smallwood 发表于 2023-4-18 16:05:25

tomzbj 发表于 2023-4-18 15:49
嗯,我用硬件SPI没调通,改用软件SPI了。
不过后来一想,把硬件SPI的MOSI和MISO并联,MOSI设置成OD输出, ...
(引用自14楼)

不需MISO,我用stm32g0硬件SPI调通了,也可以收发,但问题是我上面提到的:一次连续写入3FIFO的数据(共96byte),然后拉高CE发射(这么做的目的是让发射端FIFO发射完1FIFO的数据后不为空,不返回idle state,直至96byte全部发射完才返回idle), 但ci24r1只能收到第一个FIFO的36 byte,其他两个FIFO的数据丢失了。如果不连续发射3FIFO(每FIFO的发射隔开若干时间),则收发正常

tomzbj 发表于 2023-4-18 16:34:38

smallwood 发表于 2023-4-18 16:05
不需MISO,我用stm32g0硬件SPI调通了,也可以收发,但问题是我上面提到的:一次连续写入3FIFO的数据(共9 ...
(引用自15楼)

你拉高CE保持了多久呢?

smallwood 发表于 2023-4-18 19:05:02

CE保持多久看你空中速率/发射多少byte而定,以1mbps速率,发射32byte为例,计算如下:160us+(1usx8x32)=416us,其中160us是tx切换时间。
我一般会打开tx irq,软件拉高CE后就不管它了,直至发射完收到硬件irq,然后软件关闭CE

tomzbj 发表于 2023-4-18 20:47:55

smallwood 发表于 2023-4-18 19:05
CE保持多久看你空中速率/发射多少byte而定,以1mbps速率,发射32byte为例,计算如下:160us+(1usx8x32)=416 ...
(引用自17楼)

嗯, 用你这个办法试了一下, 轮询读STATUS寄存器,如果TX_DS置位了再拉低CE,结果发现轮询快了还是不行,慢点就正常了。

总之,看样子发送过程中就是不能有任何SPI操作? 一旦有操作,这一包发送就失败了。要么就还得是用引脚电平轮询的方式。

把250KSPS改成1MSPS,成功率就高多了, 再改成2MSPS,就基本都能成功了。

看样子这原厂工程师恐怕根本没在250KSPS下仔细测试过吧。。。

daat 发表于 2023-4-19 08:40:39

谢谢,楼主继续测试

小林 发表于 2024-1-29 09:33:05

好帖,我用接收这边,SPI轮询的方式查接收中断,一直无法接收
页: [1]
查看完整版本: Ci24R1有人踩坑么?