LoRa终端设备ASR6505普通GPIO操作

时间:2022-07-25
本文章向大家介绍LoRa终端设备ASR6505普通GPIO操作,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

前言:ASR6505是基于STM8L和SX1262的SIP封装,因此操作ASR6505的GPIO实质上就是STM8L的GPIO,因此可以直接使用STM8的标准库,也可以使用SDK提供的API来操作GPIO。

开发板上的普通GPIO

如图中,H2针脚引出的正是普通GPIO。

普通GPIO说明

ASR6505引出了5个引脚作为普通GPIO,其中GPIO0用作射频开关控制、GPIO1用作NSS控制引脚,因此可二次开发的只剩下3个,与STM8对应关系如下:

ASR6505 STM8

GPIO2 PC4

GPIO3 PE6

GPIO4 PE7

SDK中关于延时

整个使用TIM4来产生延时。

(1)秒延时

void Delay( float s );

(2)毫秒延时

void DelayMs( uint32_t ms );

SDK中关于GPIO的操作

SDK关于GPIO的库函数主要在gpio.c、gpio.h、gpio-borad.c、gpio-borad.h文件中,其中gpio.c、gpio.h是剥离硬件的一些关于gpio操作的通用函数,gpio-borad.c、gpio-borad.h里面主要是硬件相关的gpio的操作。

(1)gpio初始化函数:

void GpioInit( Gpio_t *obj, PinNames pin, PinModes mode,  PinConfigs config, PinTypes type, uint32_t value )

Gpio_t *obj是定义一个gpio对象;PinNames pin是具体的引脚;PinModes mode是初始化为输入或输出;PinConfigs config是开漏或者推挽输出;PinTypes type是上下拉设置;uint32_t value 是初始值。

(2)gpio输出函数:

void GpioWrite( Gpio_t *obj, uint32_t value )

Gpio_t *obj同上一样,定义的gpio对象;uint32_t value 。输出值,一般是0或1。

(3)gpio读取函数:

uint32_t GpioRead( Gpio_t *obj )

Gpio_t *obj同上一样;返回值是gpio的值。

实战应用

使用GPIO2输出高低电平,逻辑分析仪抓取波形。

代码实现

periph_gpio.h/c部分代码:

#define ASR6505_GPIO2     PC_4
#define ASR6505_GPIO3     PE_6
#define ASR6505_GPIO4     PE

主函数部分代码:

void main( void )
{   
    BoardInitMcu( );
    BoardInitPeriph( );
    
    printf("ASR6505 GPIO  test!rn");
    GPIO_PeriphInit();
    while(1)
    {
      GPIO_SetHigh();
      DelayMs(500);
      GPIO_SetLow();
      DelayMs(200);
      printf("-------------------------------------------------- rnrn");
    }
}

实验现象

可以清晰的看出,周期700ms,高电平500ms,和我们实验设计的一样。

——————END——————