问题1
uchar SPI_RW_Reg(uchar reg,uchar value) //寄存器访问函数,用来给对应寄存器写值。是通过WRITE_REG命令(0x20+寄存器地址)
{
uchar status;
CSN = 0;
status = SPI_RW(reg);
SPI_RW(value);
CSN = 1;
return(status);
}
我想请问一下,这里的status是什么目的,return(status)又是为什么。
问题2
void TX_mode(uchar*BUF)
{
CE = 0;
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS,TX_ADR_WIDTH);
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS,TX_ADR_WIDTH);
SPI_Write_Buf(WR_TX_PLOAD,BUF,RX_PLOAD_WIDTH);
SPI_RW_Reg(WRITE_REG + EN_AA,0x01); //通道0自动应答使能
SPI_RW_Reg(WRITE_REG + EN_RXADDR,0x01); //接受通道允许
SPI_RW_Reg(WRITE_REG + SETUP_RETR,0x0a); // 04寄存器,后4位0,等待250+86us,后1010是中文使用手册翻译有误
SPI_RW_Reg(WRITE_REG + RF_CH,40); // 40?
SPI_RW_Reg(WRITE_REG + RF_SETUP,0x07); //PLL_LOCK允许,传输速率1M,发射功率0,低噪音放大功率使能
SPI_RW_Reg(WRITE_REG + CONFIG,0x0e); //CRC使能,设成发送模式,16位CRC校验,上电,上电模式,MAX_RT,TX_DS,RX_RD中断产生时,IRQ引脚电平为低
CE = 1;
}
这里的 SPI_RW_Reg(WRITE_REG + RF_CH,40);
SPI_RW_Reg(WRITE_REG + RF_CH, 40); // 选择射频通0x40
这条的注解是这样的,可是通过手册,感觉不是啊[img]file:///C:UsersAdministratorAppDataRoamingTencentUsers1109135625QQWinTempRichOleYN%R[XJ6~HUFJ7QR9_QCV3B.png[/img]
问题3
void init_io()
{
CE = 0;
CSN = 1;
IRQ = 1; SCK = 0;
}
这里的引脚初始化又是怎么通过使用手册写出来的?
问题2:看手册可得知他有40个通道此处他用的是40通道而已(注意不是0x40,而是十进制的40,即0x28)另外你图片没传上来,看不到;
问题3:这个根据时序图写出来的,只是为了确保不会乱写入数据,实际意义不是太大。
一周热门 更多>