初级会员

- 积分
- 59
- 金钱
- 59
- 注册时间
- 2014-9-11
- 在线时间
- 0 小时
|
5金钱
两个芯片之间通讯不成功,猜测匹配不成功,求通讯需要匹配的参数,还有是用哪个寄存器,寄存器哪个位怎么设置来配置。
还有是否要关闭自动应答,禁用发送完成中断和接收完成中断,它本来给的两个例子以上设置不同,不知道怎么改。
下面是STC15F2K60S2的接收模式设置:
void n1PA_Dev_Init(void)
{
n1PA_Pin_CE = 0; // CE置低,进入待机模式
n1PA_SPI_W_Reg_Byte(n1PA_CMD_W_REGISTER | n1PA_REG_CONFIG, n1PA_RCD_TX_DS_DI // 禁用发送完成中断
| n1PA_RCD_MAX_RT_DI // 禁用发送超时中断
| n1PA_RCD_CRC_EN // 启用CRC
| n1PA_RCD_CRC16 // CRC16
| n1PA_RCD_PWR_UP // 上电模式
| n1PA_RCD_PRIM_PRX); // RX模式
n1PA_SPI_W_Reg_Byte(n1PA_CMD_W_REGISTER | n1PA_REG_EN_AA, n1PA_RCD_ALL_PIPE_AA_DI); // 关闭自动应答
n1PA_SPI_W_Reg_Byte(n1PA_CMD_W_REGISTER | n1PA_REG_EN_RXADDR, n1PA_RCD_PIPE0_RX_EN); // 使能接收通道0
n1PA_SPI_W_Reg_Byte(n1PA_CMD_W_REGISTER | n1PA_REG_SETUP_AW, n1PA_RCD_AW_5byte); // 设置RX地址宽度
n1PA_SPI_W_Reg_Byte(n1PA_CMD_W_REGISTER | n1PA_REG_SETUP_RETR, n1PA_RCD_ARC_DI); // 禁用自动重发
n1PA_SPI_W_Reg_Byte(n1PA_CMD_W_REGISTER | n1PA_REG_RF_CH, n1PA_RF_CH); // 设置射频通道
n1PA_SPI_W_Reg_Byte(n1PA_CMD_W_REGISTER | n1PA_REG_RF_SETUP, n1PA_RCD_RF_DR_2Mbps // 设置传输速率为250kbps
| n1PA_RCD_RF_PWR_22dBm); // 发射功率为+22dBm
n1PA_SPI_W_Reg_Byte(n1PA_CMD_W_REGISTER | n1PA_REG_RX_PW_P0, n1PA_DATA_WIDTH); // 设置RX通道0数据宽度
n1PA_SPI_W_Reg_Burst(n1PA_CMD_W_REGISTER | n1PA_REG_RX_ADDR_P0, n1PA_RF_Addr, n1PA_ADDR_WIDTH); // 设置RX通道0地址
n1PA_SPI_W_Cmd_Byte(n1PA_CMD_FLUSH_RX); // 清空RXFIFO
n1PA_Pin_CE = 1; // CE置高,进入运行模式
}
下面是32的设置;
void NRF24L01_RX_Mode(void)
{
NRF24L01_CE=0;
NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);//写RX节点地址
NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x00); //使能通道0的自动应答
NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,0); //设置RF通信频率
NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0e); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启
NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG, 0x0f); //配置基本工作模式的参数 WR_UP,EN_CRC,16BIT_CRC,接收模式
NRF24L01_CE = 1; //CE为高,进入接收模式
}
求看看怎么改
|
|