NRF24L01的配置问题
voidTX_Mode(void)//发送模式{CE=0;delay_10us(2);SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS...
void TX_Mode(void) //发送模式
{
CE=0;
delay_10us(2);
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_RW_Reg(WRITE_REG + EN_AA, 0x01);
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);
SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x03);
SPI_RW_Reg(WRITE_REG + RF_CH, 40);
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);
CE=1;
}
配置发射之后,此时读各个寄存器发现参数是完全正确的,用一下函数开始像发送缓冲区写入要发送数据:
void TX_Mode1(void)
{
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH);
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);
CE=1;
delay_10us(15);
}
此时,数据时写进发送缓冲区了,但是之前配置过的各个寄存器的参数就莫名其妙的变为初始值了……请高手帮忙哈……如果在TxMode1里面再加一句SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);之后 再把CE置高10us以上,那读出来的各个寄存器的值就变成了全是0xFF了……这是为什么捏???请高手解决哈……急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急
SPI是用STC单片机模拟的……时序没有任何问题……换了4块无线模块全是这种问题……另一个朋友用单片机自带的SPI也在调试这个无线模块,出现的问题一模一样……
具体全部程序请看:http://hi.baidu.com/ad394970083/blog/item/72028f0636e74fdb7b89473a.html
AT89S52单片机也试过,问题是一样的…… 展开
{
CE=0;
delay_10us(2);
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_RW_Reg(WRITE_REG + EN_AA, 0x01);
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);
SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x03);
SPI_RW_Reg(WRITE_REG + RF_CH, 40);
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);
CE=1;
}
配置发射之后,此时读各个寄存器发现参数是完全正确的,用一下函数开始像发送缓冲区写入要发送数据:
void TX_Mode1(void)
{
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH);
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);
CE=1;
delay_10us(15);
}
此时,数据时写进发送缓冲区了,但是之前配置过的各个寄存器的参数就莫名其妙的变为初始值了……请高手帮忙哈……如果在TxMode1里面再加一句SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);之后 再把CE置高10us以上,那读出来的各个寄存器的值就变成了全是0xFF了……这是为什么捏???请高手解决哈……急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急
SPI是用STC单片机模拟的……时序没有任何问题……换了4块无线模块全是这种问题……另一个朋友用单片机自带的SPI也在调试这个无线模块,出现的问题一模一样……
具体全部程序请看:http://hi.baidu.com/ad394970083/blog/item/72028f0636e74fdb7b89473a.html
AT89S52单片机也试过,问题是一样的…… 展开
2个回答
展开全部
。。。这种情况我也遇到过,要不然就是什么信号都没有,或者就是时钟信号时有时没有,这个不关24L01的事,是你对单片机配置的问题,像配置IO口的输入输出方向,设置它相对的引脚,还有单片机上的时钟等,还记得要进行喂狗(),等你将这些配置好以后就可以啦,通过SPI传数据到24L01的时候看你自己是要用硬件SPI实现还是软件SPI实现啦,这些你要通过查阅你自己的MCU的芯片手册来对相应的寄存器进行配置,希望可以给你点提示吧。 哈
追问
单片机用的STC12C5604AD 不存在I/O输入输出的配置问题……接线没有问题,SPI用的I/O模拟的,单片机时钟用的外部时钟,没有开启看门口……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
灵德
2024-11-19 广告
2024-11-19 广告
由化工方面的博士、教授和企业的高级技术人员与管理人员创建的高科技化工企业。主要从事下列产品的开发、生产和相关的技术服务:▼高纯电子化学品(主要为高纯季铵碱 )▼季铵碱系列▼季铵盐系列▼季膦化合物系列▼相转移催化剂(PTC)▼均苯四甲酸 (P...
点击进入详情页
本回答由灵德提供
展开全部
分给我吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询