我现在在用无线龙的cc2530的底板拓展心率传感器信息的采集以及组网这一部分。可是我们遇到了一个问题。在ADC采集时,原先代码通过电压值范围判断是哪个传感器,我不知道心率传感器范围?进而不知道怎么采集心率信息。我们卡在这很久了,求指导,万分感谢!!!
- 无线龙原始i/o代码
- --------------------------------------------------------
- //Initialization I/O for sensor
- // IO口初始化
- //--------------------------------------------------------
- void InitSensorIO(void)
- {
- INT8U Value;
-
- IO_DIR_PORT_PIN1(2, 0, IO_OUT);//VCC_33 电源开关
-
- P2_0 = 1;//打开VCC_33 电源
-
- IO_DIR_PORT_PIN1(0, 4, IO_IN);//电池电压测试
- P0INP |= 0x10;
-
- ugOled9616int();
-
- IO_DIR_PORT_PIN1(0, 5, IO_IN);//SEL1
- IO_DIR_PORT_PIN1(0, 7, IO_IN);//SEL2
-
- Value = ReadSensorAdc(5);//采集SEL电压
-
- if(P0_7 == 0)//SEL2 = 0
- {
- if((Value>0x01) && (Value<0x07))//红外测距
- {
- SensorNum = 24;
- }
- if((Value>0x06) && (Value<0x11))//点阵屏
- {
- SensorNum = 1;
- }
- else if((Value>0x10) && (Value<0x1B))//4位数码管
- {
- SensorNum = 2;
- }
- else if((Value>0x1A) && (Value<0x26))//高精温湿度传感器
- {
- SensorNum = 3;
- }
- else if((Value>0x25) && (Value<0x31))//普通温度、光敏、蜂鸣器
- {
- SensorNum = 4;
- }
- else if((Value>0x30) && (Value<0x3C))//压力传感器
- {
- SensorNum = 5;
- }
- else if((Value>0x3B) && (Value<0x4A))//继电器
- {
- SensorNum = 6;
- }
- else if((Value>0x49) && (Value<0x56))//雨滴传感器
- {
- SensorNum = 7;
- }
- else if((Value>0x55) && (Value<0x59))//红外传感器
- {
- SensorNum = 8;
- }
- else if((Value>0x58) && (Value<0x6A))//振动传感器
- {
- SensorNum = 9;
- }
- else if((Value>0x69) && (Value<0x70))//加速度传感器
- {
- SensorNum = 10;
- }
- else if((Value>0x6F) && (Value<0x7A))//电表传感器
- {
- SensorNum = 21;
- }
-
- }
- else//SEL2 = 1
- {
- if((Value>0x5) && (Value<0x11))//可燃气体传感器
- {
- SensorNum = 11;
- }
- else if((Value>0x10) && (Value<0x1B))//DAC输出传感器板
- {
- SensorNum = 12;
- }
- else if((Value>0x1A) && (Value<0x26))//红外温度传感器
- {
- SensorNum = 13;
- }
- else if((Value>0x25) && (Value<0x31))//超声波传感器
- {
- SensorNum = 14;
- }
- else if((Value>0x30) && (Value<0x3C))//电机模块
- {
- SensorNum = 15;
- }
- else if((Value>0x3B) && (Value<0x4A))//霍尔传感器
- {
- SensorNum = 16;
- }
- else if((Value>0x49) && (Value<0x56))//高亮LED控制
- {
- SensorNum = 17;
- }
- else if((Value>0x55) && (Value<0x59))//火焰传感器
- {
- SensorNum = 18;
- }
- else if((Value>0x58) && (Value<0x6A))//玻璃破碎传感器
- {
- SensorNum = 19;
- }
- else if((Value>0x69) && (Value<0x70))//门磁传感器
- {
- SensorNum = 22;
- }
- else if((Value>0x6F) && (Value<0x7A))//红外转发传感器
- {
- SensorNum = 20;
- }
-
- }
-
- switch(SensorNum)
- {
- case 1://点阵屏
- IO_DIR_PORT_PIN1(1, 4, IO_OUT);//DT_595
- IO_DIR_PORT_PIN1(1, 5, IO_OUT);//LT_595
- IO_DIR_PORT_PIN1(1, 7, IO_OUT);//SCK_595
-
- P1_4 = 0;
- P1_5 = 0;
- P1_7 = 0;
-
- Write595(0X00);
- Write595(0xff);
- P1_5 = 1;
- P1_5 = 0;//重启时无显示
- LcdPutString16_8(0, 0, (void*)" LED8*8 ", 12 , 1);
- break;
-
- case 2://数码管
- IO_DIR_PORT_PIN1(1, 4, IO_OUT);//DT_595
- IO_DIR_PORT_PIN1(1, 5, IO_OUT);//LT_595
- IO_DIR_PORT_PIN1(1, 7, IO_OUT);//SCK_595
- P1_4 = 0;
- P1_5 = 0;
- P1_7 = 0;
-
- IO_DIR_PORT_PIN1(0, 0, IO_OUT);//WM0
- IO_DIR_PORT_PIN1(0, 1, IO_OUT);//WM1
- IO_DIR_PORT_PIN1(0, 2, IO_OUT);//WM2
- IO_DIR_PORT_PIN1(0, 3, IO_OUT);//WM3
-
- P0 &= 0xf0;
-
- LEDDISPFUN();
-
- LcdPutString16_8(0, 0, (void*)" LED*4 ", 12 , 1);
- break;
-
- case 3://高精温湿度传感器
-
- SHT1X_INT();
-
- LcdPutString16_8(0, 0, (void*)" Humidity ", 12 , 1);
-
- break;
-
- case 4://普通温度、光敏、蜂鸣器
- IO_DIR_PORT_PIN1(1, 6, IO_OUT);//BEEP
- P1_6 = 1;//OFF
-
- IO_DIR_PORT_PIN1(1, 4, IO_OUT);//CS_TC77
- IO_DIR_PORT_PIN1(1, 5, IO_OUT);//SCK_TC77
- IO_DIR_PORT_PIN1(1, 7, IO_IN);//DAT_TC77
-
- IO_DIR_PORT_PIN1(0, 1, IO_IN);//Lingt
- P0INP |= 0x02;
-
- CS_TC77 = 1;
-
- LcdPutString16_8(0, 0, (void*)" Temp/Light ", 12 , 1);
- break;
-
- case 5://压力传感器
- IO_DIR_PORT_PIN1(0, 0, IO_IN);//Pressure
- P0INP |= 0x01;
-
- LcdPutString16_8(0, 0, (void*)" Pressure ", 12 , 1);
- break;
-
- case 6://继电器
- IO_DIR_PORT_PIN1(1, 4, IO_OUT);//K1
- IO_DIR_PORT_PIN1(1, 5, IO_OUT);//K2
-
- P1_4 = 0;
- P1_5 = 0;
-
- LcdPutString16_8(0, 0, (void*)" Relay ", 12 , 1);
- break;
-
- case 7://雨滴传感器
- IO_DIR_PORT_PIN1(0, 0, IO_IN);//Raindrop
- P0INP |= 0x01;
-
- LcdPutString16_8(0, 0, (void*)" Raindrop ", 12 , 1);
-
- break;
-
- case 8://红外传感器
- IO_DIR_PORT_PIN1(0, 0, IO_IN);//Infrared
-
- LcdPutString16_8(0, 0, (void*)" Infrared ", 12 , 1);
- break;
-
- case 9://振动传感器
- IO_DIR_PORT_PIN1(1, 4, IO_OUT);//BEEP
-
- IO_DIR_PORT_PIN1(0, 0, IO_IN);//Shake
-
- PICTL |= 0x08; //Port 0, inputs 3 to 0 interrupt enable.
- PICTL |= 0x01; //Falling edge on input gives interrupt
-
- P0IEN |= 0x01;//Port 0, inputs 0 interrupt enable.
-
- IEN1 |= 0x20; //Port 0 interrupt enable
-
- P0IFG &= 0xfe; //Clear any pending interrupts
-
- LcdPutString16_8(0, 0, (void*)" Shake ", 12 , 1);
-
- break;
-
- case 10://加速度传感器
- IO_DIR_PORT_PIN1(0, 0, IO_IN);//X-Acceler
- IO_DIR_PORT_PIN1(0, 1, IO_IN);//Y-Acceler
- IO_DIR_PORT_PIN1(0, 4, IO_IN);//Z-Acceler
- P0INP |= 0x13;
-
- IO_DIR_PORT_PIN1(1, 4, IO_OUT);//SLEEP
- IO_DIR_PORT_PIN1(1, 5, IO_OUT);//G-SEL
-
- P1_4 = 1;//No Sleep
- P1_5 = 0;//G-sel=1.5g
-
- LcdPutString16_8(0, 0, (void*)"Acceleration", 12 , 1);
- break;
-
- case 11://可燃气体传感器
- IO_DIR_PORT_PIN1(0, 0, IO_IN);//ADC IN
- P0INP |= 0x01;
-
- IO_DIR_PORT_PIN1(1, 4, IO_OUT);//SLEEP
-
- P1_4 = 1;//打开可燃气体电源
-
- LcdPutString16_8(0, 0, (void*)" Gas ", 12 , 1);
- break;
-
- case 12://DAC
- HalUARTInit();//初始化串口
-
- LcdPutString16_8(0, 0, (void*)" DAC-OUT ", 12 , 1);
- break;
-
- case 13://红外测温传感器
- IO_DIR_PORT_PIN1(1, 7, IO_IN);//DRDY IN
-
- LcdPutString16_8(0, 0, (void*)" TMP006 ", 12 , 1);
- break;
-
- case 14://超声波传感器
- IO_DIR_PORT_PIN1(0, 0, IO_IN);//ECHO IN
-
- IO_DIR_PORT_PIN1(1, 4, IO_OUT);//TRIG OUT
- P1_4 = 0;
-
- LcdPutString16_8(0, 0, (void*)" Ultrasonic ", 12 , 1);
- break;
-
- case 15://电机模块
-
- HalUARTInit();//初始化串口
-
- LcdPutString16_8(0, 0, (void*)" Motor ", 12 , 1);
- break;
-
- case 16://霍尔传感器
- IO_DIR_PORT_PIN1(0, 0, IO_IN);
-
- LcdPutString16_8(0, 0, (void*)" Hall ", 12 , 1);
- break;
-
- case 17://高亮LED控制
- Timer34int();
- PERCFG |= 0x20;//Timer3管脚关联
- P1SEL |= 0x40;
- P1DIR |= 0x40;
- P1_6 = 0;
- //ChangT3Cmp0Val(250);
-
- LcdPutString16_8(0, 0, (void*)" LED-LIGHT ", 12 , 1);
- break;
-
- case 18://火焰传感器
- IO_DIR_PORT_PIN1(0, 0, IO_IN);
-
- LcdPutString16_8(0, 0, (void*)" FLAME ", 12 , 1);
- break;
-
- case 19://玻璃破碎传感器
- IO_DIR_PORT_PIN1(1, 7, IO_OUT);
- IO_DIR_PORT_PIN1(0, 0, IO_IN);
-
- P1_7 = 1;
-
- LcdPutString16_8(0, 0, (void*)" GLASS ", 12 , 1);
- break;
-
- case 20://红外转发传感器
- HalUARTInit();//初始化串口
-
- LcdPutString16_8(0, 0, (void*)" Remote ", 12 , 1);
- break;
-
- case 21://电表传感器
- IO_DIR_PORT_PIN1(0, 0, IO_OUT);
- P0_0 = 0;
- ParitySet = 1; //校验标致位置1
- HalUARTInit();//初始化串口
-
-
- LcdPutString16_8(0, 0, (void*)" Ammeter ", 12 , 1);
- break;
-
- case 22://门磁传感器
- IO_DIR_PORT_PIN1(0, 0, IO_IN);
-
- LcdPutString16_8(0, 0, (void*)" Magnetism ", 12 , 1);
- break;
-
- case 24://红外测距传感器
- IO_DIR_PORT_PIN1(0, 0, IO_IN);
-
- LcdPutString16_8(0, 0, (void*)"DistanceTest", 12 , 1);
- break;
-
- default:
- LcdPutString16_8(0, 0, (void*)" No Sensor ", 12 , 1);
- break;
- }
- }
- //----------------------------------------------------------
- //Read Sensor ADC value
- //读取AD值
- //输入:通道名
- //返回:8位AD值
- //----------------------------------------------------------
- INT8U ReadSensorAdc(INT8U channel)
- {
- INT8U temp;
- temp = HalAdcRead(channel,HAL_ADC_RESOLUTION_8);
- return temp;
- }