搜索
bottom↓
回复: 16

急!!CC1100如何接收100个以上的字节

[复制链接]

出0入0汤圆

发表于 2011-9-29 14:24:15 | 显示全部楼层 |阅读模式
CC1100如何接收100个以上的字节,是这样的,我的项目要求定点测试一个点的频率,并用CC1100将数据发到服务端,请问CC1100如何接收,发送100个以上的字节,CC1100的FIFO只有64字节,要是分两字接、发的话,要如何去分,小弟不才看不懂英文资料,不过我看过资料上有说过大于64字节的接收的。

  原文大概如下,实现看不懂,请朋友们指条明路,接、发、无线唤醒功能都全做好,现在就差如何实现大量数据的接、发而已,希望好心人能教一下,最好有做过大数据接,发的朋友,贴个程序来给小弟看看。谢谢大家

The number of bytes in the RX FIFO can be read from the status register
RXBYTES.NUM_RXBYTES. To avoid receiving data while reading the last byte in the
RX FIFO one should never empty the RX FIFO before the last byte of the packet is
received. Due to issue 3 in this errate note, special care must be taken when reading the
RXBYTES register during reception.:
1. Read RXBYTES.NUM_RXBYTES repeatedly at a rate guaranteed to be at least
twice that of which RF bytes are received until the same value is returned twice; store
value in n.
2. If n < # of bytes remaining in packet, read n-1 bytes from the RX FIFO.
3. Repeat 1-2 until n = # of bytes remaining in packet.
4. Read the remaining bytes from the RX FIFO.
Pseudocode:
BYTE n, l, len, *pDataBuf;
// Get length byte in packet (safely)
n = SPI_READ(RXBYTES);
do { l = n; n = SPI_READ(RX_BYTES); } while (n<2 && n!=l);
*pDataBuf++ = len = SPI_READ(RX_FIFO);
// Copy rest of packet (safely)
while (len>1) {
n = SPI_READ(RXBYTES);
do { l = n; n = SPI_READ(RX_BYTES); } while (n<2 && n!=l);
while (n>1) {
*pDataBuf++ = SPI_READ(RX_FIFO);
len--; n--;
}
}
*pDataBuf++ = SPI_READ(RX_FIFO);

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2011-9-29 16:11:06 | 显示全部楼层
回复【楼主位】iamrhq55
-----------------------------------------------------------------------

大家能给点意见吗

出0入0汤圆

发表于 2011-9-29 16:42:42 | 显示全部楼层
建议你不要传递这么大的数据包。
很容易失败。

出0入0汤圆

发表于 2011-9-29 19:57:37 | 显示全部楼层
例:FIFOTHR.FIFO_THR = 14,5字节发送FIFO,60字节接收FIFO,如果在接收模式,则设置IOCFG2 = 0x00(当接收FIFO里面的数据超过阀值,则GDO2输出高,在接收模式,使用GDO2上升沿中断),如果在发送模式,则设置IOCFG2 = 0x02(当发送FIFO中的数据超过阀值,则GDO2输出高,在发送模式,使用GDO2下降沿中断),IOCFG0 = 0x06(当同步字发送完成或被接收完成,则GDO0为高,包操作完成为低,在接收模式,一个包由于地址不对或超过最大长度或接收FIFO上溢而被丢弃也将为低,在发送模式,发送FIFO下溢将为低)。发送端,开始写入64字节到发送FIFO,开启发送(STX),等待GDO2下降沿中断被触发,写60字节到发送FIFO,如此循环,将要发送的数据发出;接收端,接收到同步字GDO0为高,等待两个字节被放到接收FIFO,读取包长值,使能GDO0下降沿中断,当接收数据字节数达到60或超过,GDO2上升沿中断,读取接收FIFO中的值(读取59个字节),如此重复在GDO2上升沿中断读取数据,期间要靠接收到的第一个字节表示的数据长度来计算以后的数据不能填满接收FIFO时,遇到GDO0下降沿中断,则读取接收FIFO中全部数据。至此,一个数据包的发送和接收完成。

假如一个包长为150字节,则共需写151个字节到发送FIFO,其中,第一个字节为数据包长度,在这里为150,而接收部分则总共需从接收FIFO中读出152个字节(看具体配置,如果PKTCTRL1.APPEND_STATUS为0,则读出150个字节)

注:例中,需要配置PKTLEN.PACKET_LENGTH寄存器,(这里推荐0xFF),PKTCTRL0.LENGTH_CONFIG配置为1,其他寄存器请自行配置。

出0入0汤圆

 楼主| 发表于 2011-9-30 10:32:22 | 显示全部楼层
回复【2楼】zhonghua_li 蓝色天空
-----------------------------------------------------------------------

项目要求的呀,没办法,有能够指引一下的吗

出0入0汤圆

发表于 2011-9-30 10:39:28 | 显示全部楼层
数据大小是没关系的,关键看你的传输数率!TI有对应范例的自己去找找吧

出0入0汤圆

发表于 2011-9-30 10:42:09 | 显示全部楼层
回复【楼主位】iamrhq55
-----------------------------------------------------------------------

我了解 它有两种工作模式,一个是可变数据包,还有一个是固定数据包长度。一般用可变数据包小于64个字节,第一个字节为数据长度,这样处理起来比较方便。你可以分两个包发送,每次数据包收到后放在内存。接收端收到两次后,做一次处理就Ok了。不建议发送数据包太长,很容易丢包。

出0入0汤圆

发表于 2011-9-30 11:19:49 | 显示全部楼层
采用tx fifo和rx fifo阀值中断来传输

出0入0汤圆

发表于 2011-10-1 18:13:13 | 显示全部楼层
回复【4楼】iamrhq55  
回复【2楼】zhonghua_li 蓝色天空
-----------------------------------------------------------------------
项目要求的呀,没办法,有能够指引一下的吗
-----------------------------------------------------------------------

我有支持单个数据包384Byte的CC110L无线模块哦,有兴趣加我QQ:1006218736

出0入0汤圆

发表于 2011-10-1 19:17:04 | 显示全部楼层
点击此处下载 ourdev_680002PX9CPN.rar(文件大小:10.47M) (原文件名:无线数传-配套资料V0.3.2.rar)

出0入0汤圆

 楼主| 发表于 2011-10-6 09:03:46 | 显示全部楼层
有做过大数据发送的吗

出0入0汤圆

发表于 2011-10-6 14:00:55 | 显示全部楼层
3楼说的很明白了.
不建议这么搞,效率低

出0入0汤圆

 楼主| 发表于 2011-10-6 14:36:13 | 显示全部楼层
回复【3楼】kevinshq
-----------------------------------------------------------------------

谢谢kevinshq 的指教,你有类似的程序吗,能贴个我看看最好

出0入0汤圆

 楼主| 发表于 2011-10-6 14:38:35 | 显示全部楼层
回复【11楼】rengo
-----------------------------------------------------------------------

因这项目是这样的要求没有办法,看来楼主也用CC1100做过大数据的发送吧,

出0入0汤圆

发表于 2011-11-23 11:31:19 | 显示全部楼层
3楼是对的,需要设置一个发送字节长度寄存器,这个TI有范例,专门有一个就是发送大于缓存器长度数据的程序
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 18:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表