This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

资深工程师分享硬件/射频/私有技术等实战经验

Other Parts Discussed in Thread: CC1100, CC2430, CC2500, CC1101, CC2540, CC1121, CC2541, CC2530, CC430F6137, SENSORTAG-SW, TRF7960A, TRF7960, BQ500215, BQ51025, SIMPLICITI, BQ500210EVM-689, CC430F5137, CC1100E, MSP430F2274, CC1200, MSP430F5435A, MSP430F5438, CC2420, MSP430F1611, BQ51013A, BQ500211, BQ500210

作者:mikeliujia

作品名称:CC1100无线开发平台

用过TI的CC1100和CC2430,这里分享下ATmega16L+CC1100的无线开发平台,其实这个平台不仅仅可以使用CC1100进行无线开发,还能使用CC2500,nRF2401,nRF24L01进行无线开发,下面是开发平台实物图和电路原理图。
   

首先介绍下CC1100,CC1100是一种低成本真正单片的UHF收发器,为低功耗无线应用而设计。电路主要设定为在315、433、868和915MHz的ISM(工业,科学和医学)和SRD(短距离设备)频率波段,也可以容易地设置为300-348 MHz、400-464 MHz和800-928 MHz的其他频率。其RF收发器集成了一个高度可配置的调制解调器。这个调制解调器支持不同的调制格式,其数据传输率可达500kbps。通过开启集成在调制解调器上的前向误差校正选项,能使性能得到提升。CC1100为数据包处理、数据缓冲、突发数据传输、清晰信道评估、连接质量指示和电磁波激发提供广泛的硬件支持。CC1100的主要操作参数和64位传输/接收FIFO(先进先出堆栈)可通过SPI接口控制。在一个典型系统里,CC1100和一个微控制器及若干被动元件一起使用。在这个无线开发平台上主要将CC1100和ATmega16及若干温度、光敏、红外传感器等配合起来使用。
下面介绍CC1100寄存器的配置,及CC100无线模块的电路原理图和PCB图
//****************************************************************************
//ILLUMINATE:        配置CC1100寄存器
//****************************************************************************
void WRITERFSETTINGS(void)
{
        SPIWRITEREG(TI_CC1100_IOCFG2,0x2E);                //( 0x2E)高阻抗,3状态
        SPIWRITEREG(TI_CC1100_IOCFG1,0x2E);                //( 0x2E)高阻抗,3状态
        SPIWRITEREG(TI_CC1100_IOCFG0,0x06);                //( 6) Asserts when sync word has been sent / received, and de-asserts at the end of the packet
        SPIWRITEREG(TI_CC1100_FIFOTHR,0x07);        //设置接收、发送缓冲区门限:发送缓冲区为33;接收缓冲区为32
        SPIWRITEREG(TI_CC1100_SYNC1,0xD3);                //设置同步字高字节为0xD3
        SPIWRITEREG(TI_CC1100_SYNC0,0x91);                //设置同步字低字节为0x91
        SPIWRITEREG(TI_CC1100_PKTLEN,0x3D);                //设置通讯包最大长度为61个字节
        SPIWRITEREG(TI_CC1100_PKTCTRL1,0x04);        //设置数据包后面包含两个状态字节,无地址检测
        SPIWRITEREG(TI_CC1100_PKTCTRL0,0x45);        //设置数据白化开启;正常模式,通过FIFOS发送接收;CRC检测有效;设置为可变数据包长度
        SPIWRITEREG(TI_CC1100_ADDR,0x00);                //设置模块地址为0X00
        SPIWRITEREG(TI_CC1100_CHANNR,0x00);                //设置CHANNEL NUMBER为0X01
        SPIWRITEREG(TI_CC1100_FSCTRL1,0x06);        //设置频率合成器控制寄存器,STUDIO软件自动生成
        SPIWRITEREG(TI_CC1100_FSCTRL0,0x00);        //设置频率合成器控制寄存器
        SPIWRITEREG(TI_CC1100_FREQ2,0x10);                //RF频率为433MHZ
        SPIWRITEREG(TI_CC1100_FREQ1,0xA7);                //RF频率为433MHZ
        SPIWRITEREG(TI_CC1100_FREQ0,0x62);                //RF频率为433MHZ
        SPIWRITEREG(TI_CC1100_MDMCFG4,0xC9);        //配置RF滤波带宽为100KHZ,波特率19200
        SPIWRITEREG(TI_CC1100_MDMCFG3,0x83);        //配置通讯波特率为9.6kps
        SPIWRITEREG(TI_CC1100_MDMCFG2,0x0B);        //设置调制模式为FSK,使能人工调制,同步字设置16位检测模式
        SPIWRITEREG(TI_CC1100_MDMCFG1,0x22);        //设置前向纠错检测FEC无效,设置前导字节数为2,
        SPIWRITEREG(TI_CC1100_MDMCFG0,0xF8);        //设置信道空间为199.951kHZ
        SPIWRITEREG(TI_CC1100_DEVIATN,0x34);        //配置频率偏移为19KHZ
        SPIWRITEREG(TI_CC1100_MCSM2,0x03);                //Trxtimeout=14ms
        SPIWRITEREG(TI_CC1100_MCSM1,0x30);                //主通讯控制状态机配置,Return to IDLE state upon leaving either TX or RX
        SPIWRITEREG(TI_CC1100_MCSM0,0x18);                //主通讯控制状态机配置,每4次IDLE到RX状态切换自动校准一次
        SPIWRITEREG(TI_CC1100_FOCCFG,0x16);                //频率偏移补偿配置,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_BSCFG,0x6C);                //位同步配置,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_AGCCTRL2,0x43);        //AGC 控制寄存器配置,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_AGCCTRL1,0x40);        //AGC 控制寄存器配置,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_AGCCTRL0,0x91);        //AGC 控制寄存器配置,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_WOREVT1,0x19);        //高字节事件0 工作暂停,设置Tevent0=6秒钟 0D  AN
        SPIWRITEREG(TI_CC1100_WOREVT0,0x64);        //高字节事件0 工作暂停,设置Tevent0=6秒钟 80 AN
        SPIWRITEREG(TI_CC1100_WORCTRL,0xF9);        //WOR控制设置,使能RC校准,WOR_RES        =        1
        SPIWRITEREG(TI_CC1100_FREND1,0x56);                //前端RX配置,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_FREND0,0x10);                //前端TX配置,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_FSCAL3,0xA9);                //频率合成器校准,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_FSCAL2,0x2A);                //频率合成器校准,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_FSCAL1,0x00);                //频率合成器校准,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_FSCAL0,0x11);                //频率合成器校准,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_FSTEST,0x59);                //频率合成器校准,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_PTEST,0x7F);                //频率合成器校准,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_AGCTEST,0x3F);        //频率合成器校准,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_TEST2,0x81);                //频率合成器校准,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_TEST1,0x35);                //频率合成器校准,值由SmartRF Studio软件给出
        SPIWRITEREG(TI_CC1100_TEST0,0x0B);                //频率合成器校准,值由SmartRF Studio软件给出
        SPIWRITEREG(0x2f,0x00);                                        //FSCAL0 寄存器地址通过W寄存器放到SPIADDR
}

下面介绍一个通过ATmega16L+CC1100+光敏电阻+蜂鸣器实现的远程无线光强采集报警系统,此处通过ATmega16L的AD采集光敏电阻的电压值,通过按键实现光强的上下限设定,按键具体操作:
  就是按一下KEY1,上限就加一,按住不放,就一直加
  就是按一下KEY2,上限就减一,按住不放,就一直减
  KEY3,KEY4用来设定下限,加减原理同上。
Nokia 5110 LCD可以显示这些数据,同时用一根串口线,接到电脑上通过串口调试工具可以直接看到发送的数据。
程序编译环境: AVR Studio 4.13 SP2& 4.15 + WINAVR 2.0.7.667


  • 作者:平行电

    作品名称:CC1101/CC1100之调试心得

    之前做过TI的无线,还是因为那款Chronos-ez430,中间为了和小车匹配,买了一对CC1101的无线模块,在调试的时候也遇到了一些问题。
    说道CC1101这些芯片,确实很强大,通过TI官方的smartrf软件可以生成需要的寄存器配置,但是不太好理解的就是加入了协议之后,做多点通信的调试。这个做了很久,最后因为选用的芯片RAM实在不大G2553,试着加入协议栈之后放不下,只能作罢,但是从网上找了一个简化版之后,修改参数之后可以使用。
    说道这款芯片,最大的特点大概是对中断引脚的配置了。
    #define         GDO0H        P1OUT|=BIT0;
    #define         GDO2H        P1OUT|=BIT5;

    以上两个引脚就是接收中断的反馈引脚了。提示是否接收到数据,接收到后置高。
    #define CCxxx0_IOCFG2       0x00        // GDO2 output pin configuration
    #define CCxxx0_IOCFG1       0x01        // GDO1 output pin configuration
    #define CCxxx0_IOCFG0       0x02        // (P1IN&0X01)==0X01 output pin configuration

    这里就是配置为输出中断为GDO0
    while ((P1IN&0X01)==0X01)
            {
                    delay(2);
                    --i;
                    if(i<1)
                       return 0;             
            }         
        if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0
            {
            packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度
            if (packetLength <= *length)                 //如果所要的有效数据长度小于等于接收到的数据包的长度
                    {
                halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); //读出所有接收到的数据
                *length = packetLength;                                //把接收数据长度的修改为当前数据的长度

                // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)
                halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2);         //读出CRC校验位
                            halSpiStrobe(CCxxx0_SFRX);                //清洗接收缓冲区
                return (status[1] & CRC_OK);                        //如果校验成功返回接收成功
            }
                     else 
                    {
                *length = packetLength;
                halSpiStrobe(CCxxx0_SFRX);                //清洗接收缓冲区
                return 0;
            }
        } 
            else
            return 0;

    这里就是判断是否接收到了数据,接收到了就再判断数据的长度是否正确。

    前面的这几步可以把无线调通,但是距离和效果这就要靠硬件修改了。
    加距离:首先要用好的天线,最好是带增益的,频段433MHz,接收和发射最好用一样的,曾经用两个不同的同一频段天线试了,效果没有同款的好。
    天线的方向也影响接收的效果,最好是同一方向。
    软件内部的增益设置,这个根据需要去配置,有功耗要求的就只能想想加个中继之类的了。
    另外就是模块的板子了,淘宝很多都是抄板的结果,效果有好有坏,但是从搜集的资料看:
    手表的范围不超过5m,我用的模块在100m,可穿墙,网上有人做到几公里。

  • 作者:tianshuihu

    作品名称:无线模块CC1101与BLE的使用心得

    一直对无线通讯很感兴趣,虽然具体的原理不是很懂,但还是买了许多无线通讯的小模块。最初的无线4键遥控收发器(TL2272),很小的一块板子,简单但是很好用,还可以硬件编码,这个小板子引起了我对无线应用很大的兴趣

    本科毕业时,有同学做多点的无线数据传输,用的是CC1101,一款TI公司出品的无线模块,工作在433MHz
    不过她的通讯有问题,不知道为什么收不到数据。。。
      
    刚好我的弄完了就帮她调试了一下:首先把硬件规范了一下,特意为无线模块做了一个3.3V的电源管理电路,然后把程序简化了一下,使用透传模式,然后就收到数据了!

    可是有了数据还不够,还要正确的数据,于是设计了通讯格式:每次传输8个字节,以字符‘#’作为开头,后面跟6位数据,最后一位校验。
    实际测试效果很好,没有误判

    收到数据之后尝试了一收多发,结果通讯效率大大降低:两个同时发,收到的数据数量比仅有一个发时收到的还要少。当时觉得应该是两个模块有干扰,不过对于通讯速度要求不高,后来就没有再改进了

    在那之后又用到NRF24L01、Si4432,渐渐地对于无线的调制有了一点了解,用起来就方便多了

      

    再后来遇到了Ti的BLE CC2540套件适用,就提交了一个申请。连接PAD之后试了一下,功能很强大,各个传感器的信息实时传输,界面也很漂亮,可惜对于上层的开发不怎么了解,后来就只是做了一些简单的探索。

    总的来说CC1101相对是一款比较简单的芯片,适合数据量不大的简单系统;而BLE功能更强大,功耗也很低,不过通讯的复杂度也相对较高,适合穿戴式场合等

  • 作者:rain_noise

    作品名称:CC1101无线模块 

    公司有个热计量的项目,刚开始的时候设计是使用的有线通讯的方式。后来,安装到现场,发现施工布线的时间会比较长,所以改成了无线的方式。

    于是设计了一个无线模块,模块使用的是433MHz,主芯片采用的是STM8L+CC1101的方式,数据采用透明传输。这样设计不需要改变原来的程序,只需要添加一个模块就可以了。

    原理图参考的是TI的CC1101官方示例。




  • 作者:littleshrimp

    作品名称:我玩过的TI射频

    TI的射频产品正经用过一些,以前经常使用TICC1121,这款芯片非常便宜,发射功能能过到16dBm,功能也非常强大。模块与模块之间我使用CC11212FSK传输数据。
    因为市面上有些现成的窗帘控制器使用超再生模块接收数据,为了让我们的产品能够控制现有市场上的遥控窗帘,经过分析,我们把窗帘遥控器的键码学下来,平时CC1121使用2FSK通信,当收到指令需要控制ASK窗帘时,通过配置CC1121寄存器让它切换到ASK模式,然后通过GPIO引脚模拟窗帘遥控器的时序将数据发给窗帘控制器,操作起来非常方便,传输距离比窗帘原厂带的遥控器距离都远。
    后来我又尝试过让CC1121模块接收现有市面上的烟雾、煤气、人体红外报警器的数据,这种报警器使用声表面波发送数据,正常情况下需要装一个超再生模块,出于成本、体积、开发难度多方面考虑,最后决定使用CC1121接收这类数据。先将CC1121配置成ASK模式,选好相应的速率,让CC1121的一个GPIO输出采集到的数据,然后通过单片机定时捕获波型进行分析。最后只花了很短的时间就完成CC1121接收报警器ASK数据功能。
    这样,我们设计好的一个CC1121模块即可以传送大数据,也可以控制别人的窗帘,还能接收别人报警器的信息,让我们的产品变的“无比强大”。
    除了CC1121,前段时间还玩过TICC254X,CC254X是个非常好的BLE芯片,官方提供很多资源,参加EEWORLD活动的时候我做了一个智能水平尺,还得了奖。
    后期 我自己又做过一个烘干室温湿度控制系统,可以通过手机“远程”实时查看多个烘干室的温湿度数据,为了保证通信距离,我在网上买了一些CC2541的模块,然后飞线把数据管和温湿度传感器连接上,顺便又接了一个继电器。实现的功能是手机可同时查看N多个烘干室的数据,大于android同时可连接的最大数据,为什么这么厉害?,是因为我发明了一项非常先进的“BLE定时扫描关断技术”,原理就是让每个控制器将定时使用采集到的温湿度数据更新成广播数据,手机定反复开启和关闭扫描来接收广播数据,因为MAC是唯一的,每个控制器对应的烘干室也就是唯一的,手机通过读取广播数据就能知道对应烘干室当前的温湿度,因为不需要连接,自然也没有最大连接数量的限制。
    除了实时查看温湿度,我还在手机端放了一个数据库,将所有烘干室的数据保存下来,通过插件把温湿度变化曲线画出来展现给用户。
    当然,既然叫控制系统,数据只有一个方向肯定不行,所以手机端我还加了一个按钮,用来开启或关闭风扇,传统是需要有人去对应的烘干室把风扇打开,然后估计差不多了再去关闭,费劲不说还经常忘关,浪费煤碳还影响成品质量。有了这个软件只要轻轻一点就OK了,后期我还准备在里边加一自动排风逻辑到那时我就可以加一个“智能”的幌子出去骗人了。
    使用“BLE定时扫描关断技术”还有一个好处就是android手机端不需要安装软件也可以查看温湿度数据,因为是广播数据,只需要蓝牙里扫描设备,就能看到对应的烘干室数据显示在设备列表里。
    当然我也不都是玩这么先进的东西,CC1101在我们的产品里也有应用,因为成本更低,对一些距离要求不高的场合,这款芯片非常适合。
    光说没用,还是附几张图片吧。
    这是我买的模块
    自己做的数码管
    装到盒里以后
    "成品“
    查看烘干室数据
    查看实时和历史曲线
    不用软件也能看到数据


  • 作者:Sur

    作品名称:晒晒我的无线手表的使用心得

    这款EZ430无线手表开发工具,还是当初自己在TI跟EEworld搞活动的时候买的,后来使用它,来操作过PPT,做过类似空中鼠标的功能,还尝试做简单的无线通信,后来自从玩坏了一个按键后,对他的研究就变的比较少了。


    这款无线手表在使用过程中记得千万不要把手表表面的膜给撕去,这样会对后期的保养照常很大的麻烦。



    下面这幅图是烧写程序用的,当时的开发环境用的是IAR,程序官方都有,直接拿过来略做改动,就可以实现自己想要的功能,这个烧写的还是比较值钱的,嘿嘿


    这是是带有无线功能的板子,可以直接与手表进行通信,实现一些简单的功能,比如无线鼠标之类的,这个还有一个不错的桌面程序哦,感兴趣的话大家可以试试,可以说这个是只能手表的前身也不是很过分的,毕竟这款手表在当时还是比较技术靠前的。



      


  • 作者:Sur

    作品名称: 还记得那款表 eZ430-Chronos

    那时看到这款表就非常想要,结果到手第一件事就是把它给拆了,好吧原谅我没见过什么市面,结果一不小心就把其中一个按键的卡扣弄的松动了,再一不小心,就掉到实验室的地面了,虽然后来很辛苦的把实验室的地面认认真真的打扫了一边,结果愣是没找到那个掉了的按钮,导致现在我这款表还是少一个键,非常可恨啊。

    1.jpg (82.22 KB, 下载次数: 0)

    1.jpg


  • 作者:lywangying

    作品名称:TI无线数据传输模块使用

           接触TI的产品也比较多,无线相对来讲用的少,之前项目中只用过TI的CC1101模块进行数据传输,实现了远程人机界面的设计。
           之前承担了一个项目,基于智能控制的办公室节能系统。系统由四部分组成:照明灯节能系统,空调节能系统,办公电器定时开关系统和太阳能收集利用系统。系统框图如下:
    系统采用AVR作为主控芯片,系统有电源模块、信号采集模块、时间模块、信号处理模块、控制模块等。
    在该系统中,人可以通过无线遥控方便的控制整个系统的运行,可以通过液晶显示器查看系统当前状态,实现了很好的人机交互。其中的人机交互界面用到了TI的无线产品CC1101。

    CC1101模块最大传输数率达500kbps,并可软件修改波特率,开阔地传输最远距离达到300-500米,具有无线唤醒等功能,灵敏度达到-110dBm,可靠性高,可广泛应用于各种场合的短距离无线通信领域。外加合适的按键,可以轻松做成类似于遥控器的产品,实现无线通信,数据传输。
    在项目中,CC1101性能还算比较稳定,可以控制的距离在开阔地可达500米,在楼宇间测试,100米也没有问题。另外,CC1101的资料也有很多,应用起来不是难事。


  • 作者:buer1209

    作品名称:和TI无线那些事

      无线连接和传输,包括蓝牙、wifi、射频、zigbee等,在开发过程中应用很多。TI在无线各频段都有相应的产品和解决方案,最近几年推出无线充电方案也是非常有前景。借此机会梳理一下自己用过的TI无线产品及其解决方案。
        之前用到TI的无线产品主要是zigbee, 手表Chronos, 无线传感集成平台SensorTag,和TI的无线充电方案。


    一、项目:基于zigbee的温室大棚自动检测控制系统优化设计
        目前温室大棚分布广泛,对劳动力要求比较高,推广无人值守的智能温室大棚非常具有实用价值。该系统采用ZigBee无线收发设备传输数据,无需专门架线,系统结构简单,节省了人力物力,通过ZigBee:射频收发模块可读取各大棚的数据,并实现对大棚温湿度的控制,实现真正意义上的无人值守,与普通无线技术相比,还具有低功耗、低成本和网络容量大等特点,该系统由中心控制单元和大棚温湿监控终端组成。
        Zigbee采用的是TI的CC2530解决方案,CC2530用途还是比较广泛,在网上也可以找到大量的资料,可以快速上手。在做该项目的时候,买了相应的zigbee模块并完成组网。系统可以采集环境中的温度、湿度、光强和烟雾浓度,传到上位机进行监控。
    Zigbee组网调试
    上位机监控界面
    利用TI的工具Zigbee Sensor Monitor进行测试
        在该系统中,温度传感器采用的是DS18B20,湿度传感器选用DHT11,光强传感器采用BH1750FVI,烟雾检测选用烟雾传感器。
    DS18B20及其电路图
    BH1750FVI及其电路图


    DHT11及其电路图
    烟雾传感器
    二、EZ430-CHRONOS手表
        EZ430-CHRONOS手表关注的时间比较长,最后在世界杯期间打折的时候下手,现在跑步的时候都是带着它,计时、看配速、看温度都非常方便,唯一的缺点是没有配套的心率带,无法监测心率。
        首先是购买过程,在世界杯期间发现EZ430-CHRONOS在打折,赶紧呼吁小伙伴抢购。
    小伙伴们很热情,很快433M的就被抢购一空了。
    这是我的订单。
    从购买经历上来看,我一共在TI Store买过三款产品,基本上都是一星期左右到货,联邦快递非常给力。对于经常海淘的我们来说,这已经非常快了。之前TI Store存在送货电话乱码的问题,后来bug好像都改正了。总之,购物的过程还是比较愉快的。


    配件也比较全:


    eZ430-Chronos 是基于 CC430 的高度集成的无线开发系统,基于 CC430F6137 低于 1 GHz 的射频 SoC,eZ430-Chronos 手表包含一个完整的 CC430 开发系统。它拥有一个 96 段的 LCD 显示屏,提供一个集成的压力传感器以及一个用于运动传感控制的三轴加速度计。集成的无线功能使得 Chronos 可以作为一个连接周边无线传感器(如计步器、心率显示器等)的中央集线器。eZ430-Chronos还提供温度和电池电压测量功能,可通过基于 USB 的CC1111 无线接口与 PC 相连。
    eZ430-Chronos实际上是TI在射频领域做的一套平台,可以和不同的射频设备相连,实现更丰富的功能。

    使用心得:
        总体来讲,使用还是比较满意。EZ430-CHRONOS外表很酷,功能也比较多,比较适合经常运动的人。但使用过程中也发现一些问题:
    1)首先是时间问题,经常每过一段时间EZ430-CHRONOS就会比标准时间快,需要重新校准。虽然重新同步一下就可解决,但经常走快也算是比较大的问题。
    2)EZ430-CHRONOS配套的心率带非常难买,并且非常贵。433M的好像还不支持心率带。这样运动时就没法用EZ430-CHRONOS监测心率,功能无法全部发挥出来。
    3)EZ430-CHRONOS定位感觉像是一个RF的平台,可以和其他设备相连,但目前可以和EZ430-CHRONOS相连的设备比较少,固件也少,更多设备的话应该会更好玩

    三、TI CC2541 SensorTag
    在TI搞活动期间,入手了TI CC2541 SensorTag,这款开发套件集成了6个传感器(温度、湿度、压力、加速度、陀螺仪和磁力计),并且上位软件APP开源,可以支持二次研发。我感觉手头上有这么一款套件还是很不错的,可以随时测量身边的一些情况。这次下单到发货时间较长,可能是购买者较多,货源不足的原因。焦急等待半个月后,货从荷兰发过来了,又等了一周才拿到货。

    然后按照说明书安装好:
    当时看到介绍, SensorTag支持安卓4.3以上的系统,蓝牙是BLE。手里只有GalaxyNexus, 感觉折腾一下应该能搞出来。
    Andriod 版本的软件下载地址:
    http://www.ti.com/tool/sensortag-sw
    目前官方公布支持的安卓机器型号如下:
    Nexus 4
    Nexus 7 (2012) (JWR66V)
    Nexus 7 (2013) (JSS15J)
    Samsung S4 (JWR66V.S11.130708)
    HTC One (0.1.0.0 - 20130728)
    安卓上面安装软件,效果图如下:

    使用心得:
        在拿到SensorTag后的确是非常新奇,尝试包含的各种传感器,测试不同环境下的参数。但是,慢慢的新鲜劲过了,发现也没有原来那么好玩了,放在角落里吃灰了一段时间。
        后来,冬天到了,偶然发现SensorTag,打算做远程的温度计,将SensorTag放在室外测量室外的温度。这样的话,早晨起来就不用再查预报不准的天气预报,也不用自己亲自到室外感受一下再决定穿衣搭配了。通过SensorTag差不多就可以知道室外气温,决定穿衣搭配了。
        另外,也尝试用SensorTag做夜间智能防盗报警器,该方案将sensorTag 安装在窗户玻璃上面,或者门上,利用sensorTag的加速度和陀螺仪功能,在夜间对门窗进行监控,实现智能防盗。基本部分可以通过sensorTag及修改上位软件实现,后期发挥功能可能需要蓝牙模块同手机通讯,接收上位软件发出的指令,实现声光报警。这个自己用了一段时间发现也基本没起到防盗的作用,舍友半夜出去还觉得这东西扰民。。。。  后来就没怎么用了。

    SensorTag由于有多种传感器,可以用在不同的场合,可玩性还是蛮大的。
    有SensorTag, 就是这么任性。

    四、无线数据传输工具CC1101
        CC101模块是一种射频模块,采用TI chipcon高性能无线芯片CC1101开发。是一种低成本、高度集成的UHF收发器,专为远距离无线应用而设计。在进行项目设计中,经常需要用到无线传输,最常用的有nrf2401等,相比于这些模块,TI的CC1101模块传输距离更远。
        

        关于传输距离的评测,可以参考文章
    http://blog.sina.com.cn/s/blog_9eb7f83f01017bon.html
    经测试,CC1001最远传输距离可达1Km, 相同条件下nrf2401, nrf905等只能传输500米。
    我在之前的通用型智能巡检机器人项目中用到了这款TI的无线产品,效果非常不错:


  • 作者:liutogo

    作品名称:基于TRF7960A的RFID读卡器开发

    Ti在数模电这块我认为是做的非常好的,关键是对于大学生支持力度很大,作为在校大学生感谢Ti给我们提供的支持。
    自己对于物联网方面还是很感兴趣的,射频识别(RFID)算就是物联网应用的关键技术之一。
    说到RFID,大二的时候玩过NXP的MRC522做好的现成读卡器模块。十多块钱很便宜。


    不过RC522在支持的标准方面的限制比较大,仅仅支持ISO 14443 TypeA和Mifare®通信协议。
    自己也就仅仅用它读取Mifare S50卡的ID做了个小的安防系统设计,之后就没有再用了。


    之后我就在Ti的网站上搜寻相关的RFID集成电路,之后就通过申请样片的方式得到了两片TRF7960A。
    Ti官网TRF7960A的产品界面:http://www.ti.com.cn/product/cn/TRF7960A/description
    TRF7960A是针对ISO15693,ISO18000-3,ISO14443A/B,NFC 论坛器件类型 1 至 4,和 FeliCa的完全集成的RFID写入器\阅读器IC
    全协议支持是它的一大特点,于是就想研究一下这款芯片,做套RFID阅读器。正好学校申报的大学生科技立项做宿舍安防也可以用到它。
    在Ti官网申请了样片,在申请TRF7960A的同时,还同时申请了CC2530的样片供之后研究。


    搜到Ti官方的TRF7960A评估模块,就想自己先做个评估模块测试一下申请到的TRF7960A样片。


    设计电路的时候参考了很多官方的手册,资料还算是丰富,这些资料可以从Ti官网下载。
    为了制作PCB板,根据官方提供的设计原理图,自己用Altium Designer画了如下的原理图。
      
    原理图基本上完成之后,就要考虑到PCB的布局与走线了。像这样含有射频部分的板子之前还没有划过。自己走线的时候也是参考Ti评估板的走线来做的。
    Ti官方对于TRF7960 的PCB Layout有专门的设计手册,详见http://www.ti.com.cn/cn/lit/an/sloa139/sloa139.pdf
    自己主要是保证原件布局较为工整的同时缩短TRF7960A射频引脚与天线的距离,并且在不同的射频信号线之间打过孔连接到GND网络。
    由于害怕自己射频布局没有经验,在一块板子上画了两种走线布局。
    天线部分使用Ti手册的参考设计,如下图所示:


    下图是Ti评估板的PCB示意图,可以看到在板子上有很多过孔


    官方细节


    完成后的PCB设计,不知道通过打过孔屏蔽噪声的方法可行不。


    设计的细节,觉得打过孔很盲目,不知道能起到作用不


    正反面效果图:



    最终板子拿到手的了,焊接好后就是这样的。


    焊接QFN封装不容易,还好实验室有小型回流焊机。


  • 作者:johnrey

    作品名称:说说我手头的Ti无线 

    手头接触过的Ti无线都和eeworld有关系的。首先是半价买的430chronos,应该是eeworld上看到的链接,另一个就是sensortag的活动,可惜只是学了点皮毛。不过两个东西倒一直没有吃灰,43chronos欢快的给我提示时间,sensortag偶尔拿来做体温计,哈哈。先来看看两个的合照
      
    翻了一下记录,430chronos是13年10月份买的,最初买这个呢,主要是想要一个比较与众不同的手表,最让我感兴趣的是,这家伙还带无线ppt控制,偶尔拿出来刷刷还是比较酷的呢。说实话还真没把他当以开发工具来用,因为这么实用的东西,我可不想玩坏了。搞开发,那还是要用launchpad。到现在也算一年了,基本上都带着。感受如下:优点,超级省电,本山430chronos带电量检测的,可以看到1年后,还是2.99V。当时看过文档,只用计时,可以用29个月,可是这么看看,似乎不止啊。
      
    缺点:我这个走时有点快,差不多3个月要快2分钟的样子,这个估计是RTC晶振不准吧。另外因为低功耗,所以屏幕刷新率不是很高,在阳光下,特殊角度可以明显看到刷新时的闪烁。

    然后说说这个无线了,430chronos属于Ti的sub 1G RF,我这颗是433M的,不支持胸带什么的传感器,同时sub 1G可能更多用在工业领域,消费电子类的产品很少的呢,所以啊,唯一能说说的就是ppt功能了。其实也没什么稀奇,手表可以和另一个usb CC1111 usb rf access point通信,把按键信息传给PC。看图,这个有点大,应该是433M的原因,天线特别长。这一个access point插在usb口上,有点惊人的,和现在的无线鼠标的那个没法比啊。但是说实话,还是波长的问题。
      


    手表总共4个功能按键(点灯那个不算),可惜只有红圈中3个按键能注册为控制键,
      
    不过对付一般ppt够用,全屏,上,下,正好。不过RF可费电了,经常使用的话,电池就只有几个月寿命了。关键的是,没找到机会show!!!

    下面就是sensortag了,很明星的产品。外壳也做的很漂亮,电路板上的电池座怎么看怎么像外星人。
      
    sensortag的上电时间大致是在13年12月,玩了基本ios连接什么的,看了看上面的器件原理。sensortag是BLE单模器件,算起来应该是很低功耗的吧。结果怎样?刚拿出来看,按侧键,LED没有blink哟,啥情况。上万用表一看,电池只有300mV了!!这一年中,基本处于睡眠状态,中间没怎么动呢。看来BLE的低功耗之路还有很长要走呢。但是不管怎样,蓝牙是现在每个手机必有的,而且支持BLE的越来越多,肯定是以后消费电子的大热门技术吶。最后上个 bluetooth smart的 logo结束,希望有一天我也能smart一下,哈哈。
      

  • 作者:youzizhile

    作品名称:10W无线充电解决方案 

    1    概述
    对于个手机等手持设备而言,数据线插接一直是一个比较费事的问题。如何能在实现手机放置自动充电而不需要连接数据线一直是一个比较关心的问题。现在比较可行的方法是无线充电方案,实时充电,不需要主动连接和高效传输,这需要厂商提供一个完美的解决方案。
    同时对于无线充电一直比较想DIY,但是有一个比较大的问题是怎么改造手机设备,这是暂时无法解决的问题。但是我相信,随着技术的发展和应用推广,一定会有越来越丰富的应用和厂商产品支持无线充电的。
    在无线充电技术方面一直关注于ti的相关技术应用,TI 不仅可提供支持WPC Qi标准的最丰富电源集成电路产品系列,而且也是无线电源联盟(A4WP) 与PMA的成员。
    2   ti解决方案介绍
    在相关的产品中,已投入量产bq51025和bq500215是 TI推出的一款支持业界首款全面集成型10 W无线充电解决方案,功能很强大,应用场景很丰富。该产品解决方案的接收器及相应发送器更为高效,可帮助工业、医疗及个人电子产品的设计人员让设备在摆脱所有连接器的同时,更快、更高效地充电。bq51025 采用 42 焊球、3.6 毫米 × 2.9 毫米 × 0.5 毫米芯片级封装,而 bq500215 则采用 9 毫米 × 9 毫米封装。
    Bq51025和 bq500215不仅支持防水、防尘以及便携式设计,而且还更快的为1节及2节(1S和2S)锂离子电池充电且不会产生过热。此外,该充电解决方案还兼容于市场上任何符合5W Qi标准的产品,可以更为灵活的在比以往更多的地方充电。

    系统整体应用框图如下图所示:
    Bq51025介绍:
    Bq51025接收器不仅支持4.5V至10V的可编程输出电压,而且与TI bq500215无线电源发送器相结合,还可在10W功率下实现高达84%的充电效率,从而可显著提高散热性能。该功能齐备的无线电源接收器解决方案尺寸仅为3.60 毫米 × 2.89毫米,可设计应用在众多便携式工业设计方案中,包括零售终端扫描仪、手持式医疗诊断设备以及平板电脑和超级本等个人电子产品。
    Bq51025特性如下:
    u  可靠的10W 接收器解决方案使用专有协议,采用 TI 的 10W bq500215 发送器
    u  具有后稳压LDO,可保护外部充电器输入免受整流器输出瞬态影响;采用无电感器解决方案实现最薄厚度
    u  可调节输出电压(4.5V至 10V),以实现线圈和热性能优化
    u  效率达到96% 的完全同步整流器
    u  效率97% 的高效后置稳压器
    u  功率10W 时,系统效率 84%
    u  WPC v1.1 兼容的通信和控制可实现与当前TX 解决方案的兼容
    u  已获专利的发送器板检测功能提升了用户体验
    u  主机能够通过电源信号频率测量确定TX 表面上的最佳放置位置

    u  与主机进行I2C 通信
    BQ51025应用电路


    BQ51025方框图

    bq500215是一款专用的固定频率10W无线电源数字控制器发送器,兼容于5W Qi接收器。该发送器采用增强型异物检测(FOD)方法在发送任何电源之前可进行异物检测,如果检测到过大损耗,便主动降低功率。
    bq500215特性如下:
    ·与TI 的 bq51025 接收器搭配使用时,可提供专用 10W 充电功能
    ·符合 Qi 标准的 WPC1.1 解决方案,可实现 5 W 的工作功率
    ·12 V 的输入电压和固定的工作频率
    ·电源传输前可提供带有 FOD 声脉冲检测体的增强型异物检测 (FOD)
    ·不带磁体的标准 WPC A29 型发送器线圈

    BQ500215方框图
    3   总结
    TI 无线电源管理产品支持创新高效的无线充电功能,不仅适用于手机、平板电脑以及其它便携式电子产品,而且还适用于从独立充电板到汽车及设备内嵌充电板的无线电源充电发送器。



     

  • 作者:dcexpert

    作品名称:我用过的TI无线产品

    TI的无线产品很多,从433M到2.4G,都是不错的产品。
    最早是在TI的研讨会上,利尔达送过eZ430-RF5137开发板。这套开发板做工还不错,小巧、功耗低、使用简单,就是效果不太理想,通信距离比较短。

      


    后来还有eZ430-RF2500,也很经典,可惜后来换给其它网友了,至今还有点后悔。

      


    后来学习TI的CC1110,还购买了无线龙的RF1110开发工具,这个工具还算可以吧,就是仿真有些不好用。

      

    前面都是国内公司代工或者生产的TI无线产品。后来,TI自己也出了专门的无线套件eZ430-Chronos。它针对不同国家有不同的频段,在中国是433MHz。于是第一时间花了400大洋买了一套eZ430-Chronos(后来最低降到200)。这是一个很有趣的开发板,是无线手表,有点象现在流行的可穿戴设备的,可以做一些有趣的实验。它可以用eZ430进行编程仿真,也可以通过无线进行程序升级。如果把它换成USB或者太阳能充电,还有表壳换成耐磨一点的材料,而不是塑料,再加上一个手机APP,其实就是一个非常不错的产品,比现在的很多手环手表都好,现在的很多只能算是一个玩具。可惜TI没有把这个系列做下去,不然也会象LaunchPad成为一个经典系列。

      

      

      
      

      

      

    不同模式下的功耗


    Mode


    Average Current


    Battery Life


    Shelf mode (LPM4)


    2.7 μA


    92.6 months


    Welcome screen (LPM3)


    8.9 μA


    28.0 months


    Time/Date


    9.0 μA


    27.7 months


    Continuous temperature measurement


    10.0 μA


    25.0 months


    Continuous altitude measurement


    18.0 μA


    13.8 months


    Continuous acceleration measurement


    166.0 μA


    1.5 months


    Continuous BlueRobin RX


    40.0 μA


    6.2 months


    Continuous SimpliciTI PPT (no button pressed)


    10.0 μA


    25.0 months


    Continuous SimpliciTI SYNC


    0.9 mA


    8 days


    Continuous SimpliciTI ACC


    3.7 mA


    2 days


    1h/day BlueRobin RX


    10.3 μA


    24.2 months


    1h/day SimpliciTI PPT (no button pressed)


    9.1 μA


    25.4 months


    1h/day SimpliciTI SYNC


    46.1 μA


    5.4 months


    1h/day SimpliciTI ACC


    169.9 μA


    1.4 months


    相关软件



      

    相关传感器资料




      

    文档






    这两年开始流行无线充电,TI也没有错过这个市场。TI的无线充电也是很有特色的,性能也非常不错。曾经有幸测试过TI的BQ500210EVM-689套件,性能不错,充电电流可以达到1A,效率超过70%。这还是TI前几年的产品,现在应该还会有所改进的。这个无线充电很好用,缺点可能只有成本稍高了一点,体积还稍微大了一点。

    发射器
      

    接收器   

    测试结果

    感应电压变化测试(100欧姆电阻负载时)


    直流电源电压(V)

    直流电源电流(A)

    交流感应电压(V)

    输出直流电压(V)

    11

    0.01

    0

    0

    12

    0.08

    26.1

    5

    13

    0.08

    26.6

    5

    14

    0.07

    26.6

    5

    15

    0.07

    26.9

    5

    16

    0.07

    27.2

    5

    17

    0.06

    27.9

    5

    18

    0.06

    28.4

    5

    19

    0.06

    28.3

    5



    能量转换效率测试


    直流电源电压(V)

    直流电源电流(A)

    负载电阻阻值(欧姆)

    负载端电流(A)

    能量转换效率(%)

    19.1

    0.04

    无穷大(无负载)

    0

    0

    19.1

    0.08

    50.1

    0.091

    27.2

    19.1

    0.18

    10.3

    0.48

    69

    19.1

    0.36

    5.3

    0.97

    72.5

  • 作者:fuli247012412

    作品名称:eZ430-Chronos无线手表使用感受

          Z430-Chronos 是运动手表中基于 CC430 的高度集成的无线开发系统。它可用作手表系统的参考平台、个人局域网的个人显示器或远程数据收集的无线传感器节点。
           基于 CC430F6137 低于 1 GHz 的射频 SoC,eZ430-Chronos 手表包含一个完整的 CC430 开发系统。它拥有一个 96 段的 LCD 显示屏,提供一个集成的压力传感器以及一个用于运动传感控制的三轴加速度计。集成的无线功能使得 Chronos 可以作为一个连接周边无线传感器(如计步器、心率显示器等)的中央集线器。eZ430-Chronos 还提供温度和电池电压测量功能,可通过基于 USB 的 CC1111 无线接口与 PC 相连。
           eZ430-Chronos 手表可被拆开,从而可通过定制应用对其进行重新编程,它包括一个 eZ430 USB 编程界面。
    非常喜欢这个表,但是到了我手上没发挥到极致,没有其他无线传感器,现在只能用作一个手表来使用,非常遗憾,希望论坛里开展一个扩展的活动,这样可以让大家更好的利用这个表,体现他的使用价值,我把一部分人的开发设计图片发过来,让大家欣赏下,非常不错。




    他们做的都非常好,连宣传也做的非常漂亮。

    11.jpg (41.62 KB, 下载次数: 0)

    11.jpg


  • 作者:fxw451

    作品名称:无线CC2500模块使用于毕业设计

          无线模块最初接触的是TI的eZ430-RF2500 Wireless Sensor Monitor,这款拿到手上后发现做工非常漂亮,设计者在这方面下了不少功夫,把这么一个芯片做到这些小的板子上,还有就是陶瓷天线,在毕业设计环节我专门做了测试发现在10米时还能收到信息,非常不错,如果对于普通设计者恐怕很难实现这样的功能,还有就是他的软件,设计的非常不错,可以多个无线进行通信,实现成网状结构,每个节点可以收信息将收到的信息发送到主控单片上,单片机通过串口发送到上位机上,这个界面的设计非常不错,可以看出TI在这方面花费很多资本,光这一个eZ430-RF2500 Wireless Sensor Monitor好像不止一个企业设计,唯一的遗憾是这个上位机界面的程序没有开源,不知道EEworld能否搞到这方面的开源资料,让大家见识一下。

          以上就是他的好处,怎么应用于毕业设计了,这个芯片开发出来可以作为一个半成品,用户只要读出它的串口信息就可以完全应用了,不需要做其他任何修改,方便设计开发,而应用于毕业设计方面也是非常不错,虽然有点大才小用,不过我感觉TI公司是非常乐意大家将他应用于毕业设计方面,毕业设计方面关于无线方面的课题非常多,我就不一一介绍了,什么温度控制,智能防盗系统设计。





         说道这有点控制不住就简单的说说智能防盗设计吧,现在大家在路上走难免被小偷盯上,现在小偷盯人无非就是手机钱包等贵重物品,这样智能防盗有用武之地了,eZ430-RF2500 Wireless Sensor Monitor可以根据距离的远近发送信号给主控,主控可以按照这个进行设定,比如超过50cm后就让主控报警,提醒用户您的东西远离你了,用户根据主机在最短的时间内跟踪丢失的物品,可以根据距离的远近来判断物品所在的位置,及时发现丢失的物品。

    我认为这只是一个环节,后面还会有更多的应用关于eZ430-RF2500 Wireless Sensor Monitor,大家也一定能设计出更好的产品



  • 作者:眼大5子

    作品名称:CC430 RF死机

    前段时间在调试CC430F5137程序,调了好久一直没找到原因,我先说一下现象。
    CC430分为5系列MUC和CC1101内核,在作为遥控器和发射机使用时,经常会待机睡死。
    比如我的接收器通电运行一天一夜后,第二天用遥控器来发射数据,但是发射器接收不到数据,
    此时查看接收器的心跳LED仍然继续在跳,所以怀疑是RF部分死机,而单片机正常运行。
    到目前为止还没排除是硬件问题所致还是软件缺陷。可能本人能力有限,所以我只能通过换方案来尝试。
    现在初步打算换成Silicon的si4463+MSP430的方案试试,距离也比CC1101远。当然如果
    我原来的CC430这个问题解决了我还是希望用这个方案的,因为我已经做了几百套遥控器放在仓库,
    这损失也不少啊。
    下面是这个遥控器的硬件,部分图纸和代码避免不必要的麻烦设置回复可见,希望把这个分享给大家,能给你的开发起到一点点作用。

      

    #include "Mysys_430.h"
    
    
    // 同步字宏定义
    #define Re_power_value  3    //接收功率值为0~7
    #define Tr_power_value  6    //发射功率值为0~7
    
    /**************************************
     CC430无线系统芯片设备设置的基本参数
    ***************************************/
    Uint8  RF_Frequency;      //发射频率
    Uint8  RF_FRE_Group=0;    //频率组
    Uint8  RF_CHANNR=0;       //频道号
    Uint8  RF_ADDR_NO;        //对方设备地址
    Uint8  RF_ADDR=0;         //设备地址
    Uint8  RF_rx_power=0;     //设备的接收功率
    Uint8  PATABLE_VAL=0;     //发射功率级别
    Uint8  RF_FIFO_THR=7;     //设置接收发送缓存门限值
    // 3:0  FIFO_THR[3:0]    设置接收发送缓存门限值;
    Uint8  RF_ADDR_chk=1;     //设备地址校验状态
    //1:0  ADR_CHK[1:0]   控制是否进行地址校验:
        //                    0 (00) 不进行地址校验
        //                    1 (01) 地址校验,不接收地址广播
        //                    2 (10) 地址校验,接收广播地址0x00
        //                    3 (11) 地址校验,接收广播地址0x00和0xFF
    /**********************************/
    
    
    /****************************************
     CC430无线系统芯片4组基础频率的设置表
     FREQ0,FREQ1,FREQ2,TEST0的值
     RF_para_setting[0][x][x]  为315M的设置表
     RF_para_setting[1][x][x]  为433M的设置表
    *****************************************/
    const Uint8  RF_para_setting[2][4][4]={{{0x4A,0x1D,0x0C,0x0B}, {0x89,0x1D,0x0C,0x0B}, {0xC8,0x1D,0x0C,0x0B}, {0x07,0x1E,0x0C,0x0B}}, 
                                          {{0x99,0x89,0x10,0x0B}, {0XD8,0x89,0x10,0x0B}, {0x56,0x8A,0x10,0x0B},{0x17,0x8A,0x10,0x0B}}};
    // 433Mhz  10PF 10PF
    #define RF_FREQ2    RF_para_setting[RF_Frequency][RF_FRE_Group][2]    //频率控制器2
    #define RF_FREQ1    RF_para_setting[RF_Frequency][RF_FRE_Group][1]    //频率控制器1
    #define RF_FREQ0    RF_para_setting[RF_Frequency][RF_FRE_Group][0]    //频率控制器0
    #define RF_TEST0    RF_para_setting[RF_Frequency][RF_FRE_Group][3]    //频率测试值
    /*****************************************/
    
    /****************************************
     CC430无线发射的功率表,共8级
      功率暂时不可调
     RF_PATABLE_TAB[0][8]  为315M的功率设置表
     RF_PATABLE_TAB[1][8]  为433M的功率设置表
    *****************************************/
    Uint8  RF_PATABLE_TAB[2][8]={{0x1A,0x24,0x27,0X2B,0X62,0X8B,0XCB,0XC0},
                                       {0x1A,0x24,0x27,0x68,0X40,0X8E,0x8B,0X85}};
    
    /*****************************************/
    
    
    void  InitRadio(RF_SETTINGS *pRfSettings);
    void  RF_sys_rfSetting_ini(RF_SETTINGS *pRfSettings);
    void  Transmit(Uint8 *buffer, Uint8 length);
    void  TI_CC_Wait(Uint16 cycles);
    Uint8 Transmit_Wait(Uint16 x);
    UINT8 halRfReceivePacket(Uint8 *rxBuffer, Uint8 *length) ;   //接收无线数据
    
    
    /*****************************************
     将初始化的参数值放入 rfSettings 数据结构中
    *******************************************/
    void RF_sys_rfSetting_ini(RF_SETTINGS *pRfSettings)
    {
      
     RF_Frequency=RF_basic_Frequency;     //发射频率
     RF_FRE_Group=RF_basic_team;          //组别
     RF_CHANNR=RF_frequency_channel;      //频道号
     RF_ADDR=RF_Device_address_own;       //本机地址
     RF_ADDR_NO=RF_Device_address_Other;  //对方地址
     RF_rx_power=Re_power_value;          //本机接收功率
     PATABLE_VAL=Tr_power_value;          //本机发射功率
     RF_FIFO_THR=7;
     RF_ADDR_chk=0; 
     
     
     pRfSettings->freq2=RF_FREQ2;
     pRfSettings->freq1=RF_FREQ1;
     pRfSettings->freq0=RF_FREQ0;
     pRfSettings->test0=RF_TEST0;
     pRfSettings->channr=RF_CHANNR;
     pRfSettings->fifothr&=0xF0;
     pRfSettings->fifothr|=RF_FIFO_THR;
     pRfSettings->pktctrl1&=0xFC;
     pRfSettings->pktctrl1|=RF_ADDR_chk;
     
     pRfSettings->frend0 &=0xF8;
     pRfSettings->frend0 |=PATABLE_VAL;
     
     pRfSettings->agcctrl2&=0xF8;
     pRfSettings->agcctrl2|=RF_rx_power;     //本机接收功率
     
     pRfSettings->addr=RF_ADDR;              //本机地址
     pRfSettings->sync1=RF_SYNC1;
     pRfSettings->sync0=RF_SYNC0;            //同步字节
     
     }
    
    /**************************************************
      无线内核写入程序
    ***************************************************/
    void InitRadio(RF_SETTINGS *pRfSettings)
    {
      // Set the High-Power Mode Request Enable bit so LPM3 can be entered
      // with active radio enabled 
      PMMCTL0_H = 0xA5;
      PMMCTL0_L |= PMMHPMRE_L; 
      PMMCTL0_H = 0x00; 
      
      WriteRfSettings(pRfSettings); 
    }
    
    
    /*******************************************************
      无线内核初始化程序
     ********************************************************/
    void RF_sys_ini(void)
    {  
     // Increase PMMCOREV level to 2 for proper radio operation
        // SetVCore(2);                    在用电池时,需要用这个函数           
      RF_sys_rfSetting_ini(&rfSettings);                   //首先更改参数表
      ResetRadioCore();                                    //复位无线内核
      
      InitRadio(&rfSettings);                               //初始化无线系统
      WriteBurstPATable(RF_PATABLE_TAB[RF_Frequency],8);    //初始化发射功率
      
      RF_RX();
      Strobe( RF_SIDLE);   //无线空闲模式,需要数据双向,这一句可以不要。
    }
    
    /*********************************************************
    无线内核定时初始化程序
    ************************************************************/
    void RF_sys_Reset(void)
    {
    
      ResetRadioCore();                                    //复位无线内核  
      InitRadio(&rfSettings);                               //初始化无线系统
      WriteBurstPATable(RF_PATABLE_TAB[RF_Frequency],8);    //初始化发射功率
      RF_RX();
    
     }
    //---------------------------------------------------------------------------//
    //
    //! @brief                         RF_RX
    //! @author                 zozo
    //! @note                                
    //! @param                         void
    //! @return                 void
    //!
    //!        @deprecated none
    //! @since 2010.9.13
    //! @see   
    //---------------------------------------------------------------------------//
    void RF_RX(void)
    { 
      RF1AIES |= BIT9;                          // Falling edge of RFIFG9
      RF1AIFG &= ~BIT9;                         // Clear a pending interrupt
      RF1AIE  |= BIT9;                          // Enable the interrupt 
      
      // Radio is in IDLE following a TX, so strobe SRX to enter Receive Mode
      Strobe( RF_SRX );        //进入接收状态               
      
      receiving = 1;       //准备接收 
    }
    //---------------------------------------------------------------------------//
    //
    //! @brief         
    //! @author zozo
    //! @note                
    //! 
    //! @param 
    //!
    //! @return Uint8            1: TURE / 0: FALSE
    //!
    //!        @deprecated none
    //! @since 2010.9.13
    //! @see   
    //---------------------------------------------------------------------------//
    void ReceiveOff(void)
    {
      RF1AIE &= ~BIT9;                          // Disable RX interrupts
      RF1AIFG &= ~BIT9;                         // Clear pending IFG
    
      // It is possible that ReceiveOff is called while radio is receiving a packet.
      // Therefore, it is necessary to flush the RX FIFO after issuing IDLE strobe 
      // such that the RXFIFO is empty prior to receiving a packet.
      Strobe( RF_SIDLE );    //进入空闲状态
      Strobe( RF_SFRX  );    //清楚接收缓冲区                   
    }
    
    
    /************************************************************************
     无线系统进入睡眠状态
    **************************************************************************/
    void RF_Sleep(void)
    {
      ReceiveOff();
      Strobe(RF_SPWD);
    }
    
    /************************************************************************
     无线系统退出睡眠状态
    **************************************************************************/
    void RF_Sleep_exit(void)
    {
      Strobe( RF_SIDLE );    //进入空闲状态
      RF_RX();   //进入接收状态
    }
    
    
    //---------------------------------------------------------------------------//
    //
    //! @brief         
    //! @author zozo
    //! @note                
    //! 
    //! @param 
    //!
    //! @return Uint8            1: TURE / 0: FALSE
    //!
    //!        @deprecated none
    //! @since 2010.9.13
    //! @see   
    //---------------------------------------------------------------------------//
    Uint8 halRfReceivePacket(Uint8 *rxBuffer, Uint8 *length) 
    {
                    Uint8 status[2];
                    Uint8 packetLength;
    
                    if ((ReadSingleReg( RXBYTES )& NUM_RXBYTES))
                    {
                      // Read length byte
                      packetLength = ReadSingleReg(RF_RXFIFORD);
    
                      // Read data from RX FIFO and store in rxBuffer
                      if (packetLength <=62)
                         {
                            ReadBurstReg(RF_RXFIFORD, rxBuffer, packetLength); 
                            *length = packetLength;
    
                            // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)
                            ReadBurstReg(RF_RXFIFORD, status, 2);
                            // Flush RX FIFO
                            Strobe( RF_SFRX ); 
                            // MSB of LQI is the CRC_OK bit
                            return (status[CRC_LQI_IDX] & CRC_OK);
                             }
                      else
                          {
                            //*length = packetLength;
                            *length = 0; //err process
    
                            // Flush RX FIFO
                            Strobe( RF_SFRX ); 
                            return FALSE;
                            }
                    }
                    else
                    { 
                      //*length = packetLength;
                       *length = 0; //err process
    
                       // Flush RX FIFO
                        Strobe( RF_SFRX ); 
                        return FALSE;
                     }
    }// halRfReceivePacket
    
    
    
    //---------------------------------------------------------------------------//
    //
    //! @brief         
    //! @author zozo
    //! @note                
    //! 
    //! @param 
    //!
    //! @return Uint8            1: TURE / 0: FALSE
    //!
    //!        @deprecated none
    //! @since 2010.9.13
    //! @see   
    //---------------------------------------------------------------------------//
    void Transmit(Uint8 *buffer, Uint8 length)
    {
      RF1AIES |= BIT9;                          
      RF1AIFG &= ~BIT9;                         // Clear pending interrupts
      RF1AIE |= BIT9;                           // Enable TX end-of-packet interrupt
     //  *buffer=RF_rx_add;
      WriteBurstReg(RF_TXFIFOWR, buffer, length);     //数据送入发送缓冲区,发送。
      
      Strobe( RF_STX );                         // Strobe STX   
    }
    
    
    //---------------------------------------------------------------------------//
    //
    //! @brief         
    //! @author zozo
    //! @note                
    //! 
    //! @param 
    //!
    //! @return Uint8            1: TURE / 0: FALSE
    //!
    //!        @deprecated none
    //! @since 2010.9.13
    //! @see   
    //---------------------------------------------------------------------------//
    void TI_CC_Wait(Uint16 cycles)
    {
      while(cycles>15)                          // 15 cycles consumed by overhead
        cycles = cycles - 6;                    // 6 cycles consumed each iteration
    }
    
    //---------------------------------------------------------------------------//
    //
    //! @brief         
    //! @author zozo
    //! @note                
    //! 
    //! @param 
    //!
    //! @return Uint8            1: TURE / 0: FALSE
    //!
    //!        @deprecated none
    //! @since 2010.9.13
    //! @see   
    //---------------------------------------------------------------------------//
    Uint8 Transmit_Wait(Uint16 x)
    {
            while((!HWREG_BIT_AND(RF1AIFG,BIT9)) && (x))//
                    {
                            x--;
                            TI_CC_Wait(500);
                    }
            if(x)
             return TRUE;
            else
             return FALSE;
    
    }// n*1ms  
    
    //---------------------------------------------------------------------------//
    //
    //! @brief         
    //! @author zozo
    //! @note                
    //! 
    //! @param 
    //!
    //! @return Uint8            1: TURE / 0: FALSE
    //!
    //!        @deprecated none
    //! @since 2010.9.13
    //! @see   
    //---------------------------------------------------------------------------//
    Uint8 halRfSendPacket(Uint8 *txBuffer, Uint8 size) 
    {
            Uint8 rc;
            
      //ReceiveOff();
      //receiving = 0;
      Transmit( txBuffer,size);
     // rc = Transmit_Wait(1000);
     // rc = Transmit_Wait(350);   //延时21ms
     //   rc = Transmit_Wait(5);   //延时10ms
        rc = Transmit_Wait(2);   //延时3ms
      return rc;
    }// halRfSendPacket
    
    
    
    
    /************************************************
     无线中断程序
     1.启动发射程序时:transmitting=1,receiving=0; 发送结束时,进入中断处理
     2.在接收状态时:进入中断后,收到数据RF_rx_state=1,receiving_end=0,receiving=0
       数据放在RxBuffer[]接收缓冲区中
    ************************************************/
    #pragma vector=CC1101_VECTOR
    __interrupt void CC1101_ISR(void)
    {
    //  di();
      switch(__even_in_range(RF1AIV,32))        // Prioritizing Radio Core Interrupt 
      {
        case  0: break;                         // No RF core interrupt pending                                            
        case  2: break;                         // RFIFG0,使用IOCFG0(0X02)寄存器编程的GD0产生的中断
        case  4: break;                         // RFIFG1,使用IOCFG1(0X01)寄存器编程的GD1产生的中断
        case  6: break;                         // RFIFG2,使用IOCFG2(0X00)寄存器编程的GD2产生的中断
        case  8: break;                         // RFIFG3,该中断标志出现(上跳沿):RX FIFO填满或超过RX FIFO门限。
                                                //         该中断标志消失(下跳沿):RX FIFO跌落到RXFIFO门值以下。(相当于GDOx_CFG = 0)
        case 10: break;                         // RFIFG4,该中断标志出现(上跳沿):RX FIFO填满或超过RX FIFO门限或到达数据包结尾
                                                //         该中断标志消失(下跳沿):RX FIFO为空。(相当于GDOx_CFG = 1)
        case 12: break;                         // RFIFG5,该中断标志出现(上跳沿):TX FIFO填满或超过TX FIFO门限。
                                                //         该中断标志消失(下跳沿):TX FIFO跌落到TXFIFO门值以下。(相当于GDOx_CFG = 2)
        case 14: break;                         // RFIFG6,该中断标志出现(上跳沿):TX FIFO填满
                                                //         该中断标志消失(下跳沿):TX FIFO在TX FIFO门限之下。 (相当于GDOx_CFG = 3)
        case 16: break;                         // RFIFG7,该中断标志出现(上跳沿):RX FIFO溢出
                                                //         该中断标志消失(下跳沿):RX FIFO刷新。 (相当于GDOx_CFG = 4)
        case 18: break;                         // RFIFG8,该中断标志出现(上跳沿):TX FIFO下溢
                                                //         该中断标志消失(下跳沿):TX FIFO刷新。(相当于GDOx_CFG = 5)
        case 20:                                // RFIFG9,该中断标志出现(上跳沿):同步字被发送或接收到。
                                                //         该中断标志消失(下跳沿):数据包的结尾或在RX中可选参数地址检查失败时或 RX FIFO溢出
          
                  if(receiving)
              {
                     
                  if(!RF_rx_state)
                    {   
              //        halRfReceivePacket(&RxBuffer[1], &RxBuffer[0]);
              //        RF_rx_state=1;       //接收到数据
                        
                      if((halRfReceivePacket(&RxBuffer[1], &RxBuffer[0]))&&(RxBuffer[0]==((Data_LEN+RF_ID_lenth+4)<<1)))    //CRC校验正确
                      {
                        RF_rx_state=1;       //接收到数据
                       }
                  
                      
                      }
            //          else
            //             {          
            //             RF_RX();
            //              }
                       receiving_end = 1;   // set receive flag
                       receiving = 0;       // no come in until process data 
                   }
               else                            // TX end of packet
                  {              
                    HWREG_BIT_CLR(RF1AIE,BIT9);     // Disable TX end-of-packet interrupt     
                    transmitting = 0;
                    RF_tx_state=0;            // 复位发射状态标志
                    Strobe( RF_SIDLE );       //无线空闲
                    
       //             LED_off(LED_red3);   //指示灯
                  }
          //else while(1);                             // trap 
          
                 break;
        case 22: break;                         // RFIFG10,该中断标志出现(上跳沿):接收的数据包使用CRC检查正确。
                                                //          该中断标志消失(下跳沿):从RX FIFO中读取第一个字节。 (相当于GDOx_CFG = 7)
        case 24: break;                         // RFIFG11,该中断标志出现(上跳沿):测到的PQI的值在设定的PQT值之上
                                                //          该中断标志消失(下跳沿):(LPW) (相当于GDOx_CFG = 8)
        case 26: break;                         // RFIFG12,该中断标志出现(上跳沿):当RSSI电平低于阈值时(依赖于当前CCA_MODE的设置)空闲信道评估。
                                                //          该中断标志消失(下跳沿):RSSI电平高于阈值。(相当于GDOx_CFG = 9)
        case 28: break;                         // RFIFG13,该中断标志出现(上跳沿):载波传感器。RSSI电平高于阈值。
                                                //          该中断标志消失(下跳沿):RSSI的水平低于阈值。(相当于GDOx_CFG = 14)
        case 30: break;                         // RFIFG14,该中断标志出现(上跳沿):WOR的事件0。
                                                //          该中断标志消失(下跳沿):WOR的事件0 + 1 ACLK。(相当于GDOx_CFG = 36)
        case 32: break;                         // RFIFG15,该中断标志出现(上跳沿):WOR的事件1
                                                //          该中断标志消失(下跳沿):RF振荡器稳定或下一个WOR的event0触发。(相当于GDOx_CFG = 37)
      }  
      
      
        Strobe( RF_SIDLE );    //进入空闲状态 
        Strobe( RF_SFRX  );    //清除接收缓冲区  
        RF1AIFG=0;     //清除所有中断标志
    //  ei();
      //__bic_SR_register_on_exit(LPM3_bits);     
      // LPM3_EXIT;
    }
    


  • 作者:lidonglei1

    作品名称:TI 无线干货来了

    分类:实用贴(略有闲扯) (这货是第一个也是最后一个表情,感觉影响帖子整体效果)
    风格:简单易学易懂容易(简称无脑)
    内容:TI RF(低于 1GHz下简称RF)芯片及模块学习经验及心得

    “那么问题来了!”是我想向大牛们请教的问题


    1.手表
    Chronos比较便宜实用的学习开发板,分为黑版(旧的)和白版(新出的),建议买白的,电脑那边的好调,黑版还得买CCdebuger才能调USB端


    光盘上源码非常NB,一看就知道是大神写的,太牛了,以至于看不太懂(我太菜了),发一个简单易懂的

    因为时间比较久远了,我的手表又坏了,所以建议新手参考用

    开发环境CCS5.1

    例程中上位机那界面TCL脚本程序一直也没运行起来,老说缺少dll,这个问题至今没解决,希望大神指点

    2.RF芯片
    频段433M和470M:
    TI大部分都是433M的,具体分类先不发了,只有1个CC1100E是470M的,如果是产品需要通过无委会(无线啥啥委员会)的认证,需要弄470M的(那么问题来了!为啥433就不行用于数据采集什么的?具体为什么还请大神指点,我相信这绝对不是那帮老头一拍脑门想出来的)

    射频芯片和SOC:射频芯片一般是SPI接口的只有收发功能,SOC是51单片机或430单片机+RF射频模块(在一个芯片上)
    调试工具:51核的SOC需要CCdebuger;430核的需要UIF(比较贵)也可以用手表上那个下载器,MSP-EXP430G2上的下载器应该(可能)不行;
    smartRF:TI有个smartRF软件,那个应该是和TI配套的开发板连用的,调试时只能配参数用


    和其他厂商比较:
    TI,笙科(可能有错字),新华龙和英飞凌等。TI的出的比较早,现在很多在售模块都用他。笙科的是最近出的,传说功耗更低,功率更大(没具体比较)。其他公司的不说了用的比较少的。
    大家在选用的时候可以仔细比较下,欢迎跟帖讨论(功能,性能),手册如下:

    3.RF模块
    淘宝(市场)上可以按功能分为两类透传模块和RF模块(名字忘了),透传模块就是传说中的DTU(RF芯片+mcu)实现透传用的,一般是UART的,数据从UART进,从接收端的UART出;RF模块是接单片机的,一般是SPI接口,。。。to be continue

    4.硬件调试
    关于调试设备:
    我的条件:只有一个RIGOL MSO4024 200MHz 4GSa/s的示波器
    顺便提下之前我发的一个问题,就是用这配置的示波器看433M(470M)信号,是啥效果(能不能看),答案是可以的,由于带宽有限,幅度肯定是不对的,频率能看(采样定律神马我也不说了,(但是)那么问题来了!没有(买不起)频谱仪,如果用示波器看信号频率(精确)),但也是不太准的,由于那示波器图像存储有问题,我就不发图了

    硬件参考:
    我这次调的是CC1100E,官方硬件(原理图,PCB,料单)参考

    DTU软件参考1:

    看不懂的官方例程:

    示波器的图

      

    DS4_QuickPrint1.jpg (52.8 KB, 下载次数: 0)

    下载附件  保存到相册

    2014-12-11 15:12 上传


      

  • 作者:wenyangzeng

    作品名称:TI eZ430-RF2500射频演示套件使用记

    有幸得到TI免费赠送的eZ430-RF2500 Wireless Sensor Monitor无线式温度监控套件。




          套件由发射和接收2个单元组成,发射单元采用2节7号普通电池供电,接收单元通过USB接口与PC机连接。接收和发射单元各有1片TI的CC2500射频芯片和1片MSP430F2274微处理器。CC2500工作在2.4GHz频段,频率范围在2400-2483.5MHz之间。具有较高的灵敏度:-101dBm at 10Kbps,1% packet的误码率。13.3mA的工作电流。是1款性能优异的射频模块。从配套光盘上安装Sensor Monitor Installer.exe后,


    在pc机USB接口插入接收单元。系统发现新的USB设备。在windows设备管理器中新增了MSP430 Application UART(COM4),



    短接发射单元的JP1电池连接点,发射单元与接收单元就建立了射频连接。双击windows桌面的eZ430-RF Sensor Monitor快捷图标,

      
       
        出现demo演示软件的工作界面,点击Menu-Connect连接后,发射单元的温度数据和电池电压值就实时显示在画面中。
    通过设置菜单可以选择华氏或摄氏温度显示。
    光盘压缩文件包还为用户提供了学习编程CC2500的代码。确实是一款TI不可多得的无线射频学习套件。


  • 作者:lyzhangxiang

    作品名称:2.4G有源卡片

      








    22.jpg


  • 作者:muxb

    作品名称:CC1200经验分享

     CC1200 具有业界领先的覆盖范围与共存性,以及高达 1Mbps 的数据速率,专门针对高级电表基础设施 (AMI) 及家域网 (HAN) 的 1 GHz 以下无线连接而开发,可充分满足智能电网、家庭楼宇自动化以及告警与安全系统应用需求。CC1200 支持嗅探模式与快速建立时间,可通过低功耗工作提供长达数年的电池使用寿命。CC1200 是一款高度灵活的 RF 解决方案,支持原有 1 GHz 以下系统、所有具有硬件数据包处理与硬件 AES 安全支持的 IEEE 802.15.4g FSK 模式,以及所有无线 M-Bus (wM-Bus) 模式。    我们的智能电能表就是基于超低功耗MSP430F5435A的MCU平台,使用基于TI的SimpleLink CC1200 Sub-1 GHz收发器的RF模块,完成户内户外通信任务,实际测试效果很好。

        CC1200可为那些面向多个市场的复杂智能计量表设计带来节省成本的可能性。在面向Sub-1 GHz和2.4GHz市场,使用基于TI的SimpleLink CC1200 Sub-1 GHz收发器的RF模块,同时也可用于气表和水表解决方案。这可极大减少后续设计修改所需的资源。对于计量表制造厂商来说,这就意味着更低的制造成本以及更大的投资回报。对于智能电网而言,它还意味着更快的网络接入速度。

  • 作者:digitaltek

    作品名称:CC2500在无线答题器中的应用 

       A:概述           
    在考试的时候,特别是英语考试的时候都有选择题,一般我们都是涂答题卡,然后上交后,由读卡器来读取答案,判断对错。这是比较传统的方法,但是应用上无线之后我们就有了新的操作方法:给每个同学提供一个答题器,同学们在答题器上进行答题,答完题后上位机直接通过无线读取每个同学的答案并进行统计分析,就可以立即知道哪些题大家掌握的不好,那么老师可以立即就这些问题进行重点分析。
         一般手持设备都是使用电池供电,对低功耗的要求比较好,那么MCU和无线的选择至关重要,TI的MSP430在低功耗方面的功力是有目共睹的,所以这里选择MSP430,那么选择什么系列呢?由于需要LCD来进行显示信息,那么4系列的430是不二的选择。至于无线方面可以选择工作于2.4Ghz的CC2500,当然其他的也可以,但是ZIGBEE还是谨慎选择,毕竟功耗要比普通的高。
        既然涉及通信,那么通信协议的制定对功耗和性能也至关重要,TI提供了SIMPLICITI协议可以直接使用,但是现成的协议一般占的flash都比较大,相这种本身功能不太复杂的应用,协议的空间恐怕要占掉一大半的flash,所以可以考虑使用自定义的协议。
        因为要使用pc来进行数据读取和分析,那么通过USB 连接接收器是比较方便的选择。

        下面给出结构框图:
      
                         图1.     答题器端
      

                          图2.   usb接收器端

        B:CC2500的设置
            CC2500的寄存器有几十个,要配置的话当然可以读说明书挨个配置,但是也有快捷的方式那就是使用使用TI提供的SmartRF Studio 7,下面简要说明一下使用方法。

      

                        图3  首页界面
    打开软件后(图3)可以看到Smart RF 支持的无线芯片类型,选择要配置的芯片,双击后进行如配置界面.
        
             
                            图4.Easy Mode配置界面        
             
                       图5.Export Mode 配置界面 

    配置方式有两种Easy Mode和Export Mode,Easy Mode对应使用SIMPLICITI协议的2个快捷设置(图4),Export Mode对应自定义协议(图5),其实两个的寄存器配置内容差不多。
             
      
                          图6.寄存器说明
    右侧的寄存器数值可以更改,点击寄存器的名字有说明弹出(图6),可以根据说明进行修改


    补充一张答题器的样板电路板图的主要部分,从左到右分别是CC2500模块,存储器和MSP430单片机。

  • 作者:gxliu08

    作品:RFID无线中继

    做过一个比较奇怪的项目,基于无线连接的RFID设备,13.56MHz的TypeA型非接触智能CPU卡,因设备不便有线连接,故考虑无线连接方案,传输距离50到100米,工作在433MHz。
    原型设计时 ,采用成熟的老产品,基于STC11F16XE单片机+复旦微电子的FM1702SL读卡芯片,无线连接采用TI的CC1101无线收发芯片,无线通讯频点选择433MHz。5200mAh锂电供电。
    STC11F16XE单片机和CC1101通讯的时候主要值得注意的,用GPIO模拟SPI,实现和CC1101硬件之间的链接。编程实现的时候注意时序问题。SPI的时序都一样,但是操作芯片的时候可能有应答,可能没有应答。注意CC1101寄存器的配置。整个通讯成功与否,通讯效果好不好都在寄存器的配置上。必须理解各个寄存器的作用及使用的目的及意义了。GDO0等IO口的配置在整个系统中的运用非常重要。常见配置值0x01,0x02,0x03,0x06,0x07,其中配置值最为常用配置0x06。
    接收端基于CC1110F32设计外置USB接收模块,频点当然也是433MHz,用1/4波长PCB线段简易天线。
    原型很快做完,基本沿用原来设计,试运行正常。
    无线通讯协议沿用串口协议,采用命令标志 +  命令有效长度 + 命令字 + 命令参数  +  校验和  + 命令结束标志, 命令有效长度从命令字字节到checksum之前的数据长度, 不包括长度和校验和。响应数据包采用同样结构。   
    未考虑待机省电设计,锂电供电的RFID设备待机时间较短,基本勉强维持4小时。
    根据项目,正式设计,为了降低待机功耗采用MSP430F5438,RFID的读卡芯片也采用复旦微电子的FM1701读卡芯片,无线连接采用TI的CC1101无线收发芯片,无线通讯频点选择433MHz。仍然用5200mAh锂电供电。待机时关闭RFID和CC1101供电。待机时间稳定工作24小时。由于实际每天实际工作时间4小时,已经满足需要,没有进一步优化。

  • 作者:wudianjun2001

    作品名称:智能家庭供暖控制系统

       设计一个智能家庭供暖控制系统。这套系统包括数个房间无线温控器和一个中心控制器。一般家庭有多个房间,每个房间放一个无线温控器(其中有温度采集模块),该温控器可以设置房间要达到的温度,当温度到达要控制的低温或高温时通过433无线和中心控制器通讯,通知中心控制器打开或关闭对应房间的供暖阀门(可以是水热或其他方式)。可以通过远程登陆中心服务器查看对应房间的温度(这时中心控制器主动问各个房间要温度数据),强制打开或对应任意房间的供暖。

        房间的无线温控器,可以设置不同时段的多个温度值,行业上要7天编程功能(即周一到周日),每天最多6个时间段。实现一周内七天,每天多个时间段不同的温度的控制。


       房间的无线温控器具有友好的人机界面,可能设置温控器的时间,7天内每天6个时间段的温度设置。温度设置范围为:5℃-45℃(41℉-113℉),显示一位小数位,第一次上电时默认显示设置温度为21℃,设置键每次调整0.5℃。温控器采用两节5号电池供电,使用时间要达到一年以上。电池电压过低时要能正常的提醒用户。断电后,最后一次设置的数据将保存,再次上电后自动恢复上次保存的数据。如果一天设置的时间值和另一天一样,可以直接复制数据,不用重新设置。

        房间的无线温控器能够在达到温度时,正常准确的通过无线发送数据到中心控制器,中心控制器能够正确的打开或关闭相应阀门。并且能远程正确的访问中心控制器获得相应的信息,远程能够正确的控制阀门的打开或关闭。

       无线部分采用TI的CC1101。目前房间温控器已经开发完成。不多说了,来张产品的图片。由于是公司的东西,不敢多发,就一张吧,正面的屏没装。这个PCB是有线,无线都可以使用的。无线的话上面焊接个模块,有线的话不用焊模块。

     
     

  • 作者:calmrose

    作品名称:桥梁安全监测无线传感器网络系统

    采用TIMSP430微控制器和CC2420射频收发芯片设计无线节点,并利用ZigBee协议栈,形成无线传感器网络系统,监测桥梁的倾斜和振动等结构参量,监测示意图如下。汇聚节点采集各检测节点信息,并将其发送到上位机监控界面。



    监测参量包括倾角、振动、光照和温度等,且功能可任意配置。倾角通过三轴数字加速的传感器ADXL345实现监测,其与MSP430通过SPI接口通信,获得每个轴向的加速的后,可通过如下公式计算与地表水平面的倾角,即为桥梁的倾斜角度:


    振动参量则直接对X、Y和Z三个轴的加速的进行数据分析,得到振动频率。振动数据的一个采样样本如下图所示。



    温度和光照分别通过热电阻和光敏电阻设计模拟电路,并通过A/D转换得到。


    系统设计的难点在于降低单个节点的功耗。因此对射频模块和微控制器模块都采用休眠机制。射频模块CC2420OFFPDIDLERXTX等各状态的切换及对应的切换指令可查阅其数据手册,在此不作赘述。



    经项目实际验证,射频模块进入深度休眠状态所执行的步骤为:(1)通过SRFOFF指令将CC2420切换到IDLE状态;(2)禁止CC2420芯片的FIFOP引脚中断;(3)清除VREG_EN对应引脚,令CC2420芯片进入OFF状态。射频模块退出深度休眠状态所执行的步骤为:(1)置位VREG_EN对应引脚,起动CC2420芯片,启动后自动进入PD状态;(2)通过SXOSCON指令拟将CC2420切换到IDLE状态;(3)等待晶振起振;(4)初始化CC2420芯片相关寄存器,设置通信模式、使用信道和内部地址等;(5)通过SRXON指令将CC2420切换到RX状态;(6)初始化FIFOP引脚对应的中断,并使能该中断,待机接收数据包。射频模块的休眠时间由微控制器的定时器模块控制,为减小内部DCO带来的时钟漂移,提升定时时间的精准性,微控制器采用ACLK作为时钟源。


    微控制器采用MSP430F1611,其内部提供五级休眠模式LPM0 ~ LPM4,考虑到射频模块采用ACLK作为时钟设计定时器,且定时中断可促使CPU恢复正常工作模式,项目采用LPM3模式(CPU、MCLK和SMCLK休眠;ACLK保持工作;DCO禁用)进行微控制器休眠。编程实现中分别通过_BIS_SR(LPM3_bits)和_BIC_SR_IRQ(LPM3_bits)进入和退出LPM3休眠模式。


    加入如上射频和微控制器休眠机制后,单节点在2%占空比下静态功耗为1.8mA,动态功耗为2.9mA。
  • 作者:zkl789

    作品名称:无线充电模块

    TI提供了一个支持WPC联盟Qi标准的无线电源发射器和接收器系列。BQ500211是一款符合Qi标准的新型发射器控制芯片,可对基站与移动设备之间的功率传送实施智能控制。符合Qi标准的BQ51013A是一款集成型接收器控制芯片,它集成了一个低阻抗的全同步整流器、一个低压降稳压器(LDO)、数字控制欲准确的电压和电流环路,整个功率级采用了低阻抗NMOSFET,旨在确保高效率和低功耗耗散,可提供一个稳定的DC输出以及与发射器的数字控制反馈。
    BQ51013A是一款适用于便携式应用无线电源传输的集成型高级接收器IC,此器件不但提供AC/DC电源转换,同时还集成符合Qiv1.0通信协议标准所需的数字控制功能。bq5101x与bq500210发送器控制器相结合,可为无线充电解决方案提供完整的非接触式电力传输系统。通过使用近场感应传输电能,嵌入在便携式器件中的接收线圈可通过相互耦合的电感器接受发送线圈辐射来的电能。来自接收线圈的AC信号此后经过整流和调节,可用作系统关闭电子产品的电源。全局反馈通过仅次于发送器的机制建立,以通过反散射调制稳定电能传输过程,使用支持高达5W应用的Qiv1.0通信协议来建立这个反馈。
    该器件集成了一个低阻抗完全同步整流器、低压降稳压器、数字控制、和精确电压与电流环路。整个功率级(整流器与LDO)均采用低电阻NMOSFET技术以确保高效率与低功率耗散。

    接收电路最大输出电流为1A,前端需要连接一个符合Qi标准的A5A11型号的线圈,其原理图如下图1:
      
    无线充电接收方案硬件原理图
    接收方案PCB为普通双层结构,如图2
      
    无线充电接收方案硬件PCB

    BQ500211是第二代数字无线电源控制器,此控制器集成了控制到一个单WPC兼容接收器无线电源传输所需的全部功能。设计用于5V系统,bq500211询问周围环境以寻找将被供电的WPC兼容器件、安全使用器件、接收来自被供电器件的数据包通信并管理电源传送。为了大大增加无线电源应用中的灵活性,BQ500211无线电源发送器管理器支持动态电源限制(DPL)。通过无缝优化从受限输入电源获得电源的用法,DPL提高了用户体验。bq500211可运行为一个带有磁性定位导向的WPC A5类型发送器或者一个没有磁性导向的WPC A11类型发送器。借助于综合性状态和故障监控,如果在电源传输期间发生异常情况,bq500211对其进行处理并提供指示器输出。

    低功耗发射电路的输入电压为5V,也需要连接一个符合Qi标准的A5或者A11型号的线圈,原理图如图3
      
    无线充电发射方案硬件原理图
    为了减少噪声干扰,发射方案需要设计成四层PCB,顶层放置元件、连线,并尽可能多敷铜接地,第二层为灌铜层,第三层连线,底层除了敷铜接地外,尽量少地布线,此外,还要注意,模拟地与数字地只在一点通过磁珠连接,PCB如图4
      
    无线充电发射方案硬件PCB

  • 请问你用的模块是自己做的吗,用的什么天线啊?我做的cc1110和cc1101通信,是433mhz无线测温系统的项目,一个发送温度,一个接受显示,但是老板要求的距离是400米,而我实际测量才30米左右,不知道怎么才能加大距离,至少距离在100米也好啊

  •  好贴要顶!

    BR. AZ

  • 你好,我几乎没有接触射频硬件,做的zigbee模块好像丢包率很高,如果想做好这个模块需要哪些东西? 谢谢
  • 你好,我几乎没有接触射频硬件,做的zigbee模块好像丢包率很高,如果想做好这个模块需要哪些东西? 谢谢
  • 丢包率很高?那通信距离大约是多少?射频部分有没有参考TI的官方参考设计呢?

  • 由于CC系列是高频芯片,所以对布局及走线的要求很高。线宽、线长、走线形状、铜厚、介电常数等这些都影响着天线端的性能。建议硬件电路尽可能完全参考TI的设计。TI的官 方设计基本上已经达到了最佳的射频性能。

  • 请问你的多点传输协议是怎么做的?

  • 用CC1101吗?点对多点是非常容易的,参考TI例程即可。多点对点要注意时间,同时发送可能造成拥堵

  • 你好,cc2500多点对点具体怎么避免拥堵呢?