登录/注册

stm32f103zet6nrf905

更多

STM32F103ZET6 与 nRF905 的配合使用指南:


1. 硬件连接


2. 软件配置(以标准外设库为例)

SPI初始化

void SPI1_Init(void) {
    SPI_InitTypeDef SPI_InitStruct;
    GPIO_InitTypeDef GPIO_InitStruct;

    // 使能时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1, ENABLE);

    // 配置SCK, MOSI, MISO引脚
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7 | GPIO_Pin_6;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

    // SPI参数
    SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
    SPI_InitStruct.SPI_Mode = SPI_Mode_Master;
    SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;
    SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low;      // 根据nRF905手册调整
    SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge;
    SPI_InitStruct.SPI_NSS = SPI_NSS_Soft;
    SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8; // 9MHz (72MHz/8)
    SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;
    SPI_Init(SPI1, &SPI_InitStruct);
    SPI_Cmd(SPI1, ENABLE);
}

nRF905初始化

void nRF905_Init(void) {
    // 配置控制引脚为输出
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStruct);

    // 上电并进入待机模式
    NRF905_PWR_UP(1);
    NRF905_TRX_EN(0);
    NRF905_TX_EN(0);

    // 配置nRF905寄存器(示例)
    uint8_t config[10] = {
        0x00,   // CH_NO: 频段设置(根据实际频率计算)
        0x0C,   // 输出功率+10dBm,自动重发,16位CRC
        0x44,   // 接收/发送地址长度4字节
        0x20,   // 接收有效数据长度32字节
        0x20,   // 发送有效数据长度32字节
        0xCC, 0xCC, 0xCC, 0xCC, // 接收地址(4字节)
    };
    nRF905_WriteConfig(config);
}

3. 数据收发流程

发送数据

void nRF905_SendData(uint8_t *data, uint8_t len) {
    NRF905_PWR_UP(1);       // 上电
    NRF905_TX_EN(1);        // 进入发送模式
    NRF905_TRX_EN(1);       // 启动发送

    // 写入目标地址和数据
    nRF905_WriteTxAddress(0x12345678); // 目标地址(4字节)
    nRF905_WriteTxPayload(data, len);

    // 等待发送完成(或使用中断)
    while (!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5)); // 等待AM引脚变高
    NRF905_TRX_EN(0);       // 返回待机模式
}

接收数据(中断方式)

// 中断服务函数
void EXTI4_IRQHandler(void) {
    if (EXTI_GetITStatus(EXTI_Line4) != RESET) {
        uint8_t rx_data[32];
        nRF905_ReadRxPayload(rx_data, 32);
        // 处理接收到的数据...
        EXTI_ClearITPendingBit(EXTI_Line4);
    }
}

4. 常见问题


建议:参考nRF905数据手册第8章“SPI时序”和第9章“配置流程”,结合STM32的SPI外设特性调整代码。调试时可通过逻辑分析仪抓取SPI波形,验证时序准确性。

国产APM32F103ZET6替换STM32F103ZET6经验分享

芯片,看了一些测评,有人推荐这一款APM32的单片机,价格比ST同型号的便宜,果断下单,以下是我使用APM32F103ZET6替换STM32F103ZET6的一些分享,参考了网上各路大神的资料后作的总结。 1 从手册

2022-06-08 11:43:42

STM32F103ZET6 IAP超级终端

STM32F103ZET6 IAP 超级终端资料分享

资料下载 yuwei664955 2022-11-21 15:24:29

Demo_OLED_STM32F103ZET6软件

Demo_OLED_STM32F103ZET6软件

资料下载 唐辉鸿 2022-06-06 11:20:07

STM32f103ZET6最小系统板原理图下载

STM32f103ZET6最小系统板原理图下载

资料下载 锤爆我拜托 2022-01-20 09:08:12

STM32F103ZET6——控制LED灯

STM32F103ZET6——控制LED灯

资料下载 李丽 2021-12-03 21:06:09

STM32F103ZET6最小系统板原理图

STM32F103ZET6最小系统板原理图免费下载。

资料下载 姚小熊27 2021-06-21 15:20:19

STM32F103ZET6芯片具有哪些特点

STM32F103ZET6芯片具有哪些特点?STM32F103ZET6芯片的命名方式是怎样的?

2021-10-25 07:14:05

stm32f103zet6stm32f103vct6有何不同

STM32命名规则有哪些?stm32f103zet6与stm32f103vct6有何不同?

2021-10-15 06:32:00

如何学习STM32F103ZET6

如何学习STM32F103ZET6

2021-10-13 07:57:56

基于STM32F103ZET6的无线语音控制小车设计

基于STM32F103ZET6无线语音控制小车设计与实现基于STM32F103ZET6无线语音控制小车设计与实现摘要:本文以STM32F103ZET6

2021-08-23 08:22:16

STM32F103ZET6的板载芯片

参考资料STM32F1数据手册:STM32F103ZET6.pdfSTM32F1中文手册:STM32F1xx中文参考手册.pdf开发板原理图:X

2021-08-11 07:54:49

stm32f103zet6stm32f407zg spi通信

stm32f103zet6和stm32f407zg spi通信stm32f103zet6 master

2021-08-05 07:49:25

星翼电子:战舰STM32F103ZET6开发板资源详细列表

星翼电子:战舰STM32F103ZET6开发板资源详细列表

2019-10-15 09:51:00

7天热门专题 换一换
相关标签