完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
[C] 纯文本查看 复制代码 void WIRELESS_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8; // 分别对应 CSN、CE 引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOG, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // PG6 输入 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_Init(GPIOG, &GPIO_InitStructure); GPIO_ResetBits(GPIOG, GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8); // PG6,7,8上拉 WIRELESS_CE = 0; // 使能 24L01 WIRELESS_CSN = 1; // SPI片选取消}// 检测24L01是否存在bool WIRELESS_CheckDevice(void){ u8 lBuffer[5] = { 0xA5, 0xA5, 0xA5, 0xA5, 0xA5 }; u8 i; SPI1_SetSpeed(SPI_BaudRatePrescaler_16); // SPI 速度为 9Mhz(24L01 的最大 SPI 时钟为 10Mhz) WIRELESS_WriteBuffer(NRF_WRITE_REG + NFR_TX_ADDRESS, lBuffer, 5); // 写入 5 个字节的地址. WIRELESS_ReadBuffer(NRF_READ_REG + NFR_TX_ADDRESS, lBuffer, 5); // 读出写入的地址 for(i = 0; i < 5; i++) if(lBuffer != 0xA5) return FALSE; return TRUE; // 检测到24L01} [C] 纯文本查看 复制代码 // SPI1 用于访问 NRF24L01void SPI1_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOE, ENABLE); // PORTA,E 时钟使能 RCC_APB1PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); // SPI1 时钟使能 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; // 分别对应 SCK、MISO、MOSI 三个引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // PA5/6/7复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA GPIO_SetBits(GPIOA, GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7); // PA5/6/7上拉 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // PE6,VS1053 复位 GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_ResetBits(GPIOE, GPIO_Pin_6); // 复位 VS1053 SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; // SPI设置为双线双向全双工 SPI_InitStructure.SPI_Mode = SPI_Mode_Master; // SPI主机 SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; // 发送接收8位帧结构 SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; // 时钟悬空低 SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; // 数据捕获于第1个时钟沿 SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; // NSS信号由软件控制 SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16; // 定义波特率预分频的值:波特率预分频值为16 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; // 数据传输从MSB位开始 SPI_InitStructure.SPI_CRCPolynomial = 7; // CRC值计算的多项式 SPI_Init(SPI1, &SPI_InitStructure); // 根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器 SPI_Cmd(SPI1, ENABLE); // 使能SPI外设 SPI1_ReadWrite(0xFF); // 启动传输 }
[C] 纯文本查看 复制代码 SPI1_Init(); // 被 WIRELESS_Init 依赖 WIRELESS_Init(); oDebug("初始化:无线射频..."); if(WIRELESS_CheckDevice() == TRUE) oDebug("成功rn"); else oDebug("失败rn"); 始终报失败
|
|
相关推荐
2个回答
|
|
|
|
|
|
这个串口调试软件是什么啊?
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2571 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2366 浏览 5 评论
3214 浏览 3 评论
2840 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2793 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
671浏览 1评论
907浏览 0评论
1029浏览 0评论
673浏览 0评论
501浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 11:21 , Processed in 0.943288 second(s), Total 49, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号