搜索
bottom↓
回复: 8

s52驱动cc2500的问题,发送数据的时候GDO0永远为低电平

[复制链接]

出0入0汤圆

发表于 2010-3-9 17:48:07 | 显示全部楼层 |阅读模式
使用CC2500模块,S52芯片,连接方式如下:
sbit         GDO0        =        P2^2;
sbit         GDO2        =        P2^3;
sbit        MISO        =        P1^6;
sbit        MOSI        =        P1^5;
sbit        SCK        =        P1^7;
sbit        CSN        =        P2^4;
CC2500配置如下表
        spi_write_reg(CCxxx0_IOCFG2,        0x0b);                  // 00 GDO2 output pin config.
        spi_write_reg(CCxxx0_IOCFG0,        0x06);                  // 02 GDO0 output pin config.

        spi_write_reg(CCxxx0_PKTLEN,        0xff);                  // 06 Packet length.
                                                          // 当固定长度数据包启用时表明数据包的长度。
                                                          // 若使用可变长度数据包,这个值表示允许的最大长度数据包。
        spi_write_reg(CCxxx0_PKTCTRL1,        0x05);                  // 07 Packet automation control.
                                                          // 2个状态字节(RSSI 和LQI值)将附加在数据包的有效载荷上。
                                                          // 使能接收包的地址检查,不响应广播
        spi_write_reg(CCxxx0_PKTCTRL0,        0x05);                  // 08 Packet automation control.
                                                                 // 白化关闭, 正常模式(使用TX FIFO和RX FIFO), 开启CRC校准
                                                          // 可变长度数据包(通过同步词汇后的第一个位配置数据包长度)

        spi_write_reg(CCxxx0_ADDR,                0x01);                  // 09 Device address.
                                                          // 数据包过滤时使用的地址检查

        spi_write_reg(CCxxx0_CHANNR,        0x00);                  // 0a  Channel number.
                                                          // 8位无符号信道数,被信道空间设置相乘,再加到基频率上
       
         
        spi_write_reg(CCxxx0_FREQ2,                0x5d);                  // 0d  Freq control word, high byte.
        spi_write_reg(CCxxx0_FREQ1,                0x93);                  // 0e  Freq control word, mid byte.
        spi_write_reg(CCxxx0_FREQ0,                0xb1);                  // 0f  Freq control word, low byte.
                                                          // 上述3个寄存器计算carrier频率f=26M*(0x5D93B1)/65536=2433MHz

        spi_write_reg(CCxxx0_FSCTRL1,        0x07);                  // 0b  Freq synthesizer control.
                                                             // RX中使用的理想IF频率=26M*7/1024=101Khz
        spi_write_reg(CCxxx0_FSCTRL0,        0x00);                  // 0c  Freq synthesizer control.

        spi_write_reg(CCxxx0_MDMCFG4,        0x2d);                  // 10  Modem configuration.
                                                          // 设定信道带宽BW=203kHz, 用户指定符号率的指数DRATE_E=13
        spi_write_reg(CCxxx0_MDMCFG3,        0x3b);                  // 11  Modem configuration.
                                                          // 用户指定符号率的尾数
        spi_write_reg(CCxxx0_MDMCFG2,        0x73);                  // 12  Modem configuration.
                                                          // 通信信号的调制格式=MSK, 失能曼切斯特编码/译码
                                                          // 开启TX时的重复同步词汇发送和RX时的32位同步词汇侦测(30/32同步词汇位被侦测)
        spi_write_reg(CCxxx0_MDMCFG1,        0x22);                     // 13  Modem configuration.
                                                          // 失能FEC(前向误差校正), 发送的前导位最小数目=4,
        spi_write_reg(CCxxx0_MDMCFG0,        0xf8);                  // 14  Modem configuration.
                                                          // 信道空间的8位尾数
       
        spi_write_reg(CCxxx0_DEVIATN,        0x00);                  // 15  Modem dev (when FSK mod en)
                                                          // 当MSK调制启用时:设置相位转换所使用的符号周期的片断

        spi_write_reg(CCxxx0_FREND1,        0xb6);                  // 21  Front end RX configuration.
                                                          // 前端RX配置
        spi_write_reg(CCxxx0_FREND0,        0x10);                  // 22  Front end RX configuration.
                                                          // 选择PA功率设定,PATABLE的索引值=0

        spi_write_reg(CCxxx0_FOCCFG,        0x1d);                  // 19  Freq Offset Compens. Config
                                                          // 频率偏移补偿配置
        spi_write_reg(CCxxx0_BSCFG,                0x1c);                  // 1a  Bit synchronization config.
                                                          // 位同步配置

        spi_write_reg(CCxxx0_MCSM1,                0x3f);                  // 17  MainRadio Cntrl State Machine
                                                          // 接收完数据包后的下一状态 = 保持在RX
                                                          // 发送完数据包后的下一状态 = RX
        spi_write_reg(CCxxx0_MCSM0,                0x18);                  // 18  MainRadio Cntrl State Machine
                                                          // 当从空闲到RX或TX(或FSTXON)自动进行校准
        spi_write_reg(CCxxx0_AGCCTRL2,        0xc7);                  // 1b  AGC control.
                                                          // AGC控制寄存器
        spi_write_reg(CCxxx0_AGCCTRL1,        0x00);                  // 1c  AGC control.
                                                          // AGC控制寄存器
        spi_write_reg(CCxxx0_AGCCTRL0,        0xB2);                  // 1d  AGC control.
                                                          // AGC控制寄存器

        spi_write_reg(CCxxx0_FSCAL3,        0xea);                  // 23  Frequency synthesizer cal.
                                                          // 频率合成器校准配置和结果寄存器
        spi_write_reg(CCxxx0_FSCAL2,        0x0a);                  // 24  Frequency synthesizer cal.
                                                             // 频率合成器校准配置和结果寄存器
        spi_write_reg(CCxxx0_FSCAL1,        0x00);                  // 25  Frequency synthesizer cal.
                                                          // 频率合成器校准配置和结果寄存器
        spi_write_reg(CCxxx0_FSCAL0,        0x11);                  // 26  Frequency synthesizer cal.
                                                          // 频率合成器校准配置和结果寄存器
        spi_write_reg(CCxxx0_FSTEST,        0x59);                  // 29  Frequency synthesizer cal.
                                                          // 测试用。不需要写此寄存器
       
        spi_write_reg(CCxxx0_TEST2,                0x88);                  // 2c  Various test settings.
                                                          // 测试用。不需要写此寄存器
        spi_write_reg(CCxxx0_TEST1,                0x31);                  // 2d  Various test settings.
                                                          // 测试用。不需要写此寄存器
        spi_write_reg(CCxxx0_TEST0,                0x0b);                  // 2e  Various test settings.
                                                      // 测试用。不需要写此寄存器       

调用了2500初始化后,通过写某个寄存器,然后将某个寄存器的值读出后,和写入的一致,应该是说明CC2500已经驱动完成,但是调用CC2500发送数据包,发下系统阻塞在GDO0脚,程序为
// Wait for GDO0 to be set -> sync transmitted
        while(!GDO0);
// Wait for GDO0 to be cleared -> end of packet
        while(GDO0);
通过示波器测试GDO0脚,发现GDO0脚永远为低电平。
有人知道问题会在哪里?如何解决
只测试了发送程序,对应的接收设备没有开启。

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2010-3-12 14:26:05 | 显示全部楼层
怎么没人回答啊 !!!急啊 !!!!

出0入0汤圆

发表于 2012-6-6 17:20:30 | 显示全部楼层
只要不是外部拉低,配置也是正确,就会出现正确脉冲。

出0入0汤圆

发表于 2012-6-6 19:55:05 | 显示全部楼层
本帖最后由 orzorzorzorz 于 2012-6-6 19:57 编辑

你这些配置只是说spi是ok的,但是发送你是如何操作你都没写,没人能帮到你
发送的流程:idle模式,写数据进txfifo,strobe stx指令,等待发送完成,就这样,至于发送完处于什么状态,根据你配置来定
但是每次发送填数据前,必须是idle模式

最关键的一点,你gdo0配置成啥功能了?

出0入0汤圆

发表于 2013-10-18 11:03:43 | 显示全部楼层
chinabox 发表于 2010-3-12 14:26
怎么没人回答啊 !!!急啊 !!!!

你这个问题后来调试成功了吗?

出0入0汤圆

 楼主| 发表于 2013-10-18 16:32:39 | 显示全部楼层
whxiaowang 发表于 2013-10-18 11:03
你这个问题后来调试成功了吗?

调试成功了的...记得当时是程序里的配置和发送都有点问题...

出0入0汤圆

发表于 2013-10-18 16:40:53 | 显示全部楼层
chinabox 发表于 2013-10-18 16:32
调试成功了的...记得当时是程序里的配置和发送都有点问题...

我现在发送的时候也是卡在GDO0

出0入0汤圆

 楼主| 发表于 2013-10-18 16:55:29 | 显示全部楼层
whxiaowang 发表于 2013-10-18 16:40
我现在发送的时候也是卡在GDO0

问题应该是在发送的程序上,具体的我一时也记不太清楚了....

出0入0汤圆

发表于 2013-10-18 18:38:00 | 显示全部楼层
chinabox 发表于 2013-10-18 16:55
问题应该是在发送的程序上,具体的我一时也记不太清楚了....

哦  
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-8-26 22:21

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

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