完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
5个回答
|
|
搞定了!!!太粗心
|
|
|
|
网上搜了一些资料,发现APB1(36)和APB2(72)的时钟不同,把spi1的波特率设置为了8,这样给spi的时钟应该就是9M。。。。可是还是一如既往地NRF24L01_Check()不能通过。HELP!!!
|
|
|
|
void SPI1_Init(void)
{ GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE ); RCC_APB1PeriphClockCmd( RCC_APB2Periph_SPI1, ENABLE ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7); SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPI_InitStructure); SPI_Cmd(SPI1, ENABLE); //SPI2_ReadWriteByte(0xff); } void SPI1_SetSpeed(u8 SPI_BaudRatePrescaler) { assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler)); SPI1->CR1&=0XFFC7; SPI1->CR1|=SPI_BaudRatePrescaler; SPI_Cmd(SPI1,ENABLE); //SPI2_ReadWriteByte(0xff); } u8 SPI1_ReadWriteByte(u8 TxData) { u8 retry=0; while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) { retry++; if(retry>20)return 0; } SPI_I2S_SendData(SPI1, TxData); retry=0; while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET) { retry++; if(retry>20)return 0; } return SPI_I2S_ReceiveData(SPI1); u8 NRF24L01_Check(void) { u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5}; u8 i; SPI1_SetSpeed(SPI_BaudRatePrescaler_8); NRF24L01_Write_Buf(WRITE_REG_NRF+TX_ADDR,buf,5); NRF24L01_Read_Buf(TX_ADDR,buf,5); for(i=0;i<5;i++)if(buf!=0XA5)break; if(i!=5)return 1; return 0; } |
|
|
|
你好,我也是用spi发送数据,我是新做的板子,测试板子的nrf24l01发射模块与发射模块的通信,我的程序很简单, GPIO_InitTypeDef GPIO_InitStructure; // NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1, ENABLE ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //???????ì???? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1; //PB1 CE // GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //???ì???? // GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; // GPIO_Init(GPIOB,&GPIO_InitStructure); // NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;//??????????3 // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //×???????3 // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ?¨?????? // NVIC_Init(&NVIC_InitStructure); // GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7); SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //?è??SPI???ò?ò?????ò??????????:SPI?è???????????ò?????¤ SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //?è??SPI?¤×÷????:?è?????÷SPI SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //?è??SPI???????ó??:SPI·???????8?????á?? SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //???????????±????????:?±???ü???? SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; //?????????????????±???? SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //NSS???????????¨NSS???????????í???¨????SSI???????í:????NSS??????SSI?????? SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16; //?¨???¨?????¤·???????:?¨?????¤·???????256 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //???¨??????????MSB??????LSB??????:??????????MSB?????? SPI_InitStructure.SPI_CRCPolynomial = 7; //CRC?????????à???? SPI_Init(SPI1, &SPI_InitStructure); //?ù??SPI_InitStruct?????¨???????????????èSPIx?????÷ SPI_Cmd(SPI1, ENABLE); //????SPI???è u8 SpiRW(u8 Data) { while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET); //?±SPI·????????÷·????±???? SPI_I2S_SendData(SPI1, Data); //?¨?? SPI2·?????×??????? while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); //?±SPI?????????÷?????±???? return SPI_I2S_ReceiveData(SPI1); //·???SPI?????????????? }外加时钟程序,这是工程里的内容,想了好多天,发送任意一个数,接收都是零,不知道哪里出了问题,请高手指教!还想请你发一份你的这个程序给我,不胜感激!!(990170517@qq.com) |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2487 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2271 浏览 5 评论
3065 浏览 3 评论
2732 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2694 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
496浏览 1评论
756浏览 0评论
844浏览 0评论
533浏览 0评论
340浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-1 10:18 , Processed in 1.026112 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号