OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4731|回复: 1

哪位老哥可以给讲讲sx1280_hal_status_t sx1280_hal_write这个函数,有点看不明白

[复制链接]

43

主题

109

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1163
金钱
1163
注册时间
2019-10-22
在线时间
226 小时
发表于 2023-3-20 16:51:03 | 显示全部楼层 |阅读模式
8金钱
  SX1280_SIZE_WRITE_REGISTER = 3,
sx1280_status_t sx1280_write_register( const void* context, const uint16_t addr, const uint8_t* buffer,
                                       const uint8_t size )
{
    uint8_t buf[SX1280_SIZE_WRITE_REGISTER] = { 0 };

    buf[0] = SX1280_WRITE_REGISTER;

    buf[1] = ( uint8_t )( addr >> 8 );
    buf[2] = ( uint8_t )( addr >> 0 );

    return ( sx1280_status_t ) sx1280_hal_write( context, buf, SX1280_SIZE_WRITE_REGISTER, buffer, size );
}

sx1280_hal_status_t sx1280_hal_write( const void* context, const uint8_t* command, const uint16_t command_length,
                                      const uint8_t* data, const uint16_t data_length )
{
    sx1280_hal_wakeup( context );

    // Put NSS low to start spi transaction
    bsp_gpio_set_value( RADIO_NSS, 0 );
    for( uint16_t i = 0; i < command_length; i++ )
    {
        bsp_spi_in_out( BSP_RADIO_SPI_ID, command[i] );
    }
    for( uint16_t i = 0; i < data_length; i++ )
    {
        bsp_spi_in_out( BSP_RADIO_SPI_ID, data[i] );
    }
    // Put NSS high as the spi transaction is finished
    bsp_gpio_set_value( RADIO_NSS, 1 );

    // 0x84 - SX1280_SET_SLEEP opcode. In sleep mode the radio dio is struck to 1 => do not test it
    if( command[0] != 0x84 )
    {
        sx1280_hal_wait_on_busy( );
    }

    return SX1280_HAL_STATUS_OK;
}

uint16_t bsp_spi_in_out( const uint32_t id, const uint16_t out_data )
{
    assert_param( ( id > 0 ) && ( ( id - 1 ) < sizeof( bsp_spi ) ) );
    uint32_t local_id = id - 1;

    while( LL_SPI_IsActiveFlag_TXE( bsp_spi[local_id].interface ) == 0 )
    {
    };
    LL_SPI_TransmitData8( bsp_spi[local_id].interface, ( uint8_t )( out_data & 0xFF ) );

    while( LL_SPI_IsActiveFlag_RXNE( bsp_spi[local_id].interface ) == 0 )
    {
    };
    return LL_SPI_ReceiveData8( bsp_spi[local_id].interface );
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3583
金钱
3583
注册时间
2019-8-14
在线时间
1052 小时
发表于 2023-3-21 09:31:40 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 13:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表