求大神们帮帮忙,万分感谢。
按照手册,IRQ变低电平有三种情况,为什么我的一直为高。
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, RX_ADDRESS, TX_ADR_WIDTH); //写接收地址
SPI_Write_Buf(WR_TX_PLOAD, BUF, TX_PLOAD_WIDTH); //写数据到TX FIFO
SPI_Write_Reg(WRITE_REG + EN_AA, 0x01); // 通道0自动应答
SPI_Write_Reg(WRITE_REG + EN_RXADDR, 0x01); // 使能通道0接收
SPI_Write_Reg(WRITE_REG + STATUS, 0x0e); //状态寄存器复位
SPI_Write_Reg(WRITE_REG + SETUP_RETR, 0x05); // 自动重发延时,次数
SPI_Write_Reg(WRITE_REG + RF_CH, 93); //射频通道
SPI_Write_Reg(WRITE_REG + RF_SETUP, 0x0f); //传输速率2Mbps,发射功率0dBm
SPI_Write_Reg(WRITE_REG + NRF_CONFIG, 0x0e); // CRC使能,发送模式,上电
CE = 1;
}
此帖出自
小平头技术问答
不知道老师能不能加个qq或者微信指导下
这两天调试发现其实是NRF模块可能没连接上,不知道是不是硬件的原因
SPI_Write_Buf(WRITE_REG+TX_ADDR,buff1,5);
SPI_Read_Buf(READ_REG+TX_ADDR,buff2,5);
读出的数据不等于写入的数据
uchar SPI_RW(uchar byte)
{
uchar i,j;
for(i=0; i<8; i++)
{
MOSI = (byte & 0x80);
byte <<= 1;
SCK = 1;
for(j=1;j<200;j++)
{
_nop_();
}
byte |= MISO;
SCK = 0;
for(j=1;j<200;j++)
{
_nop_();
}
}
return(byte);
}
一周热门 更多>