管理员
最后登录1970-1-1
在线时间 小时
注册时间2013-5-3
|
发表于 2017-8-11 09:08:09
|
显示全部楼层
你这函数参数怎么会是short类型的,
直接用程序原来u8类型的来发送就好
调用方式:
写入
short a[3]={-10,-20,-30};
SPI_NRF_WriteBuf(u8 reg ,(u8*)a,6)
读取的时候
u8 temp[10];
short * p = temp;
SPI_NRF_ReadBuf(u8 reg,(u8*)p,6)
printf("读取到的数据%d",*p++);
printf("读取到的数据%d",*p++);
printf("读取到的数据%d",*p++);
大概就是这样写,细节可能有bug,自己调下
注意NRF收发函数要用原来 u8类型的:
/**
* @brief 用于向NRF的寄存器中写入一串数据
* @param
* @arg reg : NRF的命令+寄存器地址
* @arg pBuf:用于存储将被读出的寄存器数据的数组,外部定义
* @arg bytes: pBuf的数据长度
* @retval NRF的status寄存器的状态
*/
u8 SPI_NRF_ReadBuf(u8 reg,u8 *pBuf,u8 bytes)
{
u8 status, byte_cnt;
NRF_CE_LOW();
/*置低CSN,使能SPI传输*/
NRF_CSN_LOW();
/*发送寄存器号*/
status = SPI_NRF_RW(reg);
/*读取缓冲区数据*/
for(byte_cnt=0;byte_cnt<bytes;byte_cnt++)
pBuf[byte_cnt] = SPI_NRF_RW(NOP); //从NRF24L01读取数据
/*CSN拉高,完成*/
NRF_CSN_HIGH();
return status; //返回寄存器状态值
}
/**
* @brief 用于向NRF的寄存器中写入一串数据
* @param
* @arg reg : NRF的命令+寄存器地址
* @arg pBuf:存储了将要写入写寄存器数据的数组,外部定义
* @arg bytes: pBuf的数据长度
* @retval NRF的status寄存器的状态
*/
u8 SPI_NRF_WriteBuf(u8 reg ,u8 *pBuf,u8 bytes)
{
u8 status,byte_cnt;
NRF_CE_LOW();
/*置低CSN,使能SPI传输*/
NRF_CSN_LOW();
/*发送寄存器号*/
status = SPI_NRF_RW(reg);
/*向缓冲区写入数据*/
for(byte_cnt=0;byte_cnt<bytes;byte_cnt++)
SPI_NRF_RW(*pBuf++); //写数据到缓冲区
/*CSN拉高,完成*/
NRF_CSN_HIGH();
return (status); //返回NRF24L01的状态
}
|
|