用协议栈做的外部霍尔传感器外部ADC电流采集有问题求助大家
zigbee吧
全部回复
仅看楼主
level 1
dramº 楼主
void GenericApp_SendTheMessage(void)
{
uint8 tvalue;
float transform_1;
unsigned char transform_2;
CURRENT current;
current.BUF.Head='&';
current.BUF.bit='.';
current.BUF.Tail='A';
HalAdcSetReference(HAL_ADC_REF_AIN7);
tvalue=HalAdcRead(HAL_ADC_CHN_AIN4 , HAL_ADC_RESOLUTION_8);
transform_1=(((tvalue-128))*30)/128;
transform_2=(((tvalue-128))*30)/128;
current.BUF.value_1[0]=transform_2/10+'0';
current.BUF.value_1[1]=transform_2%10+'0';
current.BUF.value_2[0]=((unsigned char)(transform_1*10))%10+'0';
current.BUF.value_2[1]=((unsigned char)(transform_1*100))%10+'0';
afAddrType_t my_DstAddr;
my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;
my_DstAddr.endPoint=GENERICAPP_ENDPOINT;
my_DstAddr.addr.shortAddr=0x0000;
AF_DataRequest(&my_DstAddr,&GenericApp_epDesc,
GENERICAPP_CLUSTERID,
sizeof(current),
(uint8 *)¤t,
&GenericApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS);
}
这一部分是ADC采集函数,外接的是一个霍尔传感器输出模拟量(接在p04口,参考电压外接5v从p1-7输入), transform_1=(((tvalue-128))*30)/128;是查阅资料得到的数字量和所要传送电流的值(转换公式),后面的处理是为了通过串口在电脑上显示小数点后两位的数值(为了精确)。然后tvalue是8位的根据公式的话最大电流转换值也就30A,但是串口上显示的十位数是>A的不满足所要的结果,但是实在查找不出哪里有问题。谢谢大家帮下。第一次弄这个
2016年01月12日 10点01分 1
level 9
直接输出字符串,
2016年01月12日 11点01分 2
1