分类 STM32 下的文章

跟猫一起酸汤面系列:第12天 nRF24L01库试用

中间没有第10天和第11天,因为一直没有什么进展,也不想随意糊弄
串口通了后调试起来就相对方便了,起码能够通过串口日志看到系统的工作状态
同时找到一个相对来说看起来比较清晰的nRF的HAL库
其中提供了一个测试函数uint8_t NRF24L01_Check(void)感觉配合串口输出很有用
起码能够初步判断SPI配置是否正确,接线和IO配置是否正确,得到一个是否能和模块说上话的结果
期间也出现过两次意外,一次是串口不知道什么原因默认7bit,大量乱码,
另一次就是SPI不知道什么原因默认4bit,结果Check一直通过不,
采完几个坑后让两个模块工作起来还是蛮方便的,检查完模块后,一个进入RX状态,一个进入TX状态,然后就可以调用接口收发了
实验环境是,L011接了一个模块负责循环发送,田鸡F042接一个模块和串口负责接收和输出
效果不错,下面就是读库的代码了解收发过程了,总代码量不足400行,配合猫的文档一起消化

- 阅读剩余部分 -

跟猫一起酸汤面系列:第九天 串口中断

串口发消息容易,收消息可就不是那么容易了,据说有挺多种收法,
猫说有DMA不懂是啥,有中断,似乎还有轮询
忘了看的哪篇文章的分析了,只记得中断方式是每收一个字节中断一次,
每中断size次回调一次,当size=1时每字节回调一次

HAL_UART_Receive_IT(&hlpuart1,(uint8_t *)UART1_temp,REC_LENGTH);

等待中断回调,缓冲区和size的大小,这里是1

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart->Instance==LPUART1)
  {
    UART1_Rx_Buf[UART1_Rx_cnt] = UART1_temp[0];
    HAL_UART_Receive_IT(&hlpuart1,(uint8_t *)UART1_temp,REC_LENGTH);
  }
}

串口接收中断回调函数,处理收到的数据和再次等待中断

跟猫一起酸汤面系列:第八天 串口入门

串口是个好东西,可以哗哗地输出芯片的工作状态,是哗哗地
串口输出很简单,定义了串口后定一个速率
然后引入#include "stdio.h"就有printf函数可以用了,但是还不能串口输出
重新定义一下putc就好啦,怎么会这么简单

int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&hlpuart1, (uint8_t *)&ch, 1, 0xFFFF);
  return ch;
}

如何通过串口接收数据呢,有待研究,现在起码可以从串口输出日志了

- 阅读剩余部分 -

跟猫一起酸汤面系列:第七天 SPI接线

第七天本来是休息日,所以作业也是混事儿,就写一下SPI的接线吧
spi.png

难得配了张图,打开了SPI接口,定义了CSN和CE,干嘛用的也不知道,还有增加一个外部中断的
再说一下nRF24L01模块的线序
天线
芯片 晶振
VCC CSN MOSI IRQ
GND CE SCK MISO

顺便说一下期望,一收多发,收有地址,发本身编号和状态给接收模块就可以,是否能实现还不是很明朗,困了,猫加油!

跟猫一起酸汤面系列:第六天 nRF24L01(Si24R1)

第五天,今天不吃酸汤面,nRF24L01模块到了,实际是Si24R1
为了调试方便配了一个usb的转换器,球猫的是33的土豪版,而乞丐版是8.5+4.19
土豪版有功放,主控是STM32,乞丐版要插模块,主控是STC,AT命令略有删减
1、装好CH340驱动
2、打开串口助手(putty之类的不行,可能带了回车),速率9600
3、发送AT?,返回所有配置项

OK
系统信息:
波特率:9600
目标地址:     0xFF,0xFF,0xFF,0xFF,0xFF
本地接收地址0:0xFF,0xFF,0xFF,0xFF,0xFF
通讯频率:2.400GHz
校验模式:16位CRC校验
发射功率:0dBm
空中传输速率:2Mbps
低噪声放大增益:开启

4、自己给自己发03 31 32 33,没有收到自环
5、下一步计划,找出Arduino先和这个说上话,再研究应用

- 阅读剩余部分 -