新手上路
- 积分
- 20
- 金钱
- 20
- 注册时间
- 2018-5-2
- 在线时间
- 3 小时
|
3金钱
浮点数我用一个函数转化为无符号字符串类型了,代码如下******************************************************
void sprint(float n,U8 *reChar,int zsize,int xsize,int flag)
{
int z,p,i=0,j=0;
char a[11];
//n=n+0.001;//+0.00001避免浮点数精度丢失,可根据你传感器输出实际数字位数修改,不要超出类型范围
z=(int)n;
p=(int)((n-z)*100);//取小数数字,最大1位小数 *10 2位*100 3位*1000 需要自行修改 你也可以自己写10次方函数利用xsize运算
while(p/10!=0)
{ a[i++]=p%10+'0';
p=p/10;}
a[i++]=p+'0';
a[i++]='.';
while(z/10!=0)
{
a[i++]=z%10+'0';
z=z/10;
}
a[i++]=z+'0';
// a[i]=0;
for(i=zsize+xsize-1;i>=0;i--)
reChar[j++]=a[i];
if(flag==1)
reChar[j]=',';
}
**********************************
发送设置如下
/****************************************************************************************************/
//函数:void SetTX_Mode(void)
//功能:数据发送配置
//****************************************************************************************************/
void SetTX_Mode(void)
{
RF24L01_CE_0 ;
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, RX_ADR_WIDTH);
SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);
SPI_RW_Reg(WRITE_REG + SETUP_RETR,0x1a);
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);
SPI_RW_Reg(WRITE_REG + RF_CH, 0);
SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH);
// SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x0F); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //设置发射速率为1MHZ,发射功率为最大值0dB
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);
ms_delay(1);
RF24L01_CE_1;
}
****************************************
电脑端用了一个转usb串口插在电脑上用串口调试助手读数据,调的时候如果发送源代码{0x0c,0xc9,0xcf,0xba,0xa3,0xb1,0xa6,0xc7,0xb6,0xb5,0xe7,0xd7,0xd3}电脑端就能接收,如果是我自己设置的常数浮点数转化之后的字符串就不能发送,真心不知道为什么。
***************************************************
void nRF24L01_TxPacket(unsigned char *tx_buf)//
{
RF24L01_CE_0 ; // StandBy I模式
//SPI_RW_Reg(WRITE_REG + CONFIG, 0x7e); // IRQ不显示,16位CRC,主发送
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 装载接收端地址
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // 装载数据
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送
//SPI_RW_Reg(FLUSH_TX, 0XFF);
//SPI_RW_Reg(WRITE_REG+STATUS,0XFF); // 清状态寄存器
RF24L01_CE_1; //置高CE,激发数据发送
ms_delay(1);
}
*****************************
|
|