概述
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、LORA是什么?
- 二、使用步骤
- 1.配置
- 2.其他
- 总结
前言
记录一下学习过程,这里是原子的ATK-LORA-01模块的使用,因为我是在看不懂demo,所以就写了一下,以便后续自己查看。
(这里是我的第一篇文章,写的不好。。。就写的不好吧)
提示:以下是本篇文章正文内容,下面案例可供参考
一、LORA是什么?
这里仅仅以原子的ATK-LORA-01模块来说明,可以这样认为,起就是一个无线串口。
具体的一些工作方式请参考原子官网吧。
二、使用步骤
1.配置
就像是使用单片机的串口一样,使用前需要进行相应的配置,这里的模块使用的是AT指令形式
(注意:指令结尾要加rn,指令结尾要加rn,指令结尾要加rn。!!!重要的事情说3遍)
开始配置吧
## 1.设置一下串口
***
static void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
static void LoRa_USART_Config(u32 bound)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_USART3);
GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_USART3);
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_10;
GPIO_Init(GPIOB, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = bound;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART3, &USART_InitStructure);
NVIC_Configuration();
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
USART_Cmd(USART3, ENABLE);
}
2.再写一下发送函数
static void LoRa_Usart_SendByte(u8 byte)
{
USART_SendData(USART3,byte);
while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
}
//因为AT指令都是一些字符,所以我打算整一个单独的sendstring
static void LoRa_SendString(char *c)
{
while(*c != 0 )
{
LoRa_Usart_SendByte(*c++);
}
}
void LoRa_Usart_Send(u8 *byte,uint16_t len)
{
int i;
for(i=0;i<len;i++)
{
LoRa_Usart_SendByte(byte[i]);
}
while (USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
}
3.lora配置
static void LoRa_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOF, ENABLE);
//MD0
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(GPIOC, &GPIO_InitStructure);
//AUX
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(GPIOF, &GPIO_InitStructure);
}
void LoRa_Set(void)
{
LoRa_GPIO_Init();
LoRa_USART_Config(115200);
while(LORA_AUX);//等稳定
LORA_MD0=1;//进配置
SysTick_Delay_Ms(100);
LoRa_SendString("AT+WLRATE=23,5rn");//信道23,空速19.2
SysTick_Delay_Ms(100);
LoRa_SendString("AT+UART=3,0rn");//9600-8N-1
SysTick_Delay_Ms(100);
LoRa_SendString("AT+WLTIME=0rn");//休眠时间1
SysTick_Delay_Ms(100);
LoRa_SendString("AT+TPOWER=3rn");//发射功率20dbm
SysTick_Delay_Ms(100);
LoRa_SendString("AT+CWMODE=0rn");//一般模式
SysTick_Delay_Ms(100);
LoRa_SendString("AT+TMODE=0rn");//透传
SysTick_Delay_Ms(100);
LoRa_SendString(LORA_SET_ADDR);//地址00 00
SysTick_Delay_Ms(100);
LORA_MD0=0;//退配置
SysTick_Delay_Ms(100);
LoRa_USART_Config(9600);
}
4.验证
发送:
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
LED_Init();
uart_init(115200);
printf("这是一个串口lora实验n");
printf("n");
LoRa_Set();
while(1)
{
DS1_TOGGLE
SysTick_Delay_Ms(1000);
LoRa_Usart_Send(num,2);
}
}
接收:
void USART3_IRQHandler(void)
{
uint8_t Temp;
if (USART_GetITStatus(USART3,USART_IT_RXNE)!=RESET)
{
Temp = USART_ReceiveData( USART3 );
//简单粗暴,直接打印,我就是想看看有没有配置成功返回ok就行
//平时要是用的画就是放进数组中即可
printf("%c",Temp);
}
USART_ClearITPendingBit(USART3,USART_IT_RXNE);
}
2.其他
这篇文章没有其他,哈哈哈哈哈哈,我下楼买盒饭了
总结
真是能分层就分层、能分模块就分模块啊,乱七八糟。
ps:以后就以这种形式学习了,爽啊
最后
以上就是怕孤独白云为你收集整理的原子的ATK-LORA-01模块的使用前言一、LORA是什么?二、使用步骤总结的全部内容,希望文章能够帮你解决原子的ATK-LORA-01模块的使用前言一、LORA是什么?二、使用步骤总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复