【STM32Cube_16】使用硬件CRC校验数据(以SHT30为例)

发布者:美丽的1号最新更新时间:2021-07-22 来源: eefocus关键字:STM32Cube  SHT30 手机看文章 扫描二维码
随时随地手机看文章

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件CRC外设校验数据,并用SHT30温湿度传感器为例检查是否可以正确校验。


1. 准备工作

硬件准备

  • 开发板
    首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi):
    mark

软件准备

  • 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码;

  • 准备一个串口调试助手,这里我使用的是Serial Port Utility;

  

2.生成MDK工程

选择芯片型号

打开STM32CubeMX,打开MCU选择器:
mark

搜索并选中芯片STM32L431RCT6:
mark

配置时钟源

  • 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;

  • 如果使用默认内部时钟(HSI),这一步可以略过;

这里我都使用外部时钟:
mark

配置串口

小熊派开发板板载ST-Link并且虚拟了一个串口,原理图如下:

mark

这里我将开关拨到AT-MCU模式,使PC的串口与USART1之间连接。

接下来开始配置USART1:

mark

配置CRC外设

首先激活CRC:
mark

然后配置CRC校验的初始值:

这里我们以SHT30为例,其数据手册中已给出,如图:

mark

据此,CRC外设的配置如下:
mark

配置时钟树

STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:
mark

生成工程设置

mark

代码生成设置

最后设置生成独立的初始化文件:
mark

生成代码

点击GENERATE CODE即可生成MDK-V5工程:
mark

3. 在MDK中编写、编译、下载用户代码

重定向printf( )函数

参考: 【STM32Cube_09】重定向printf函数到串口输出的多种方法。

测试CRC校验

在main.c文件中添加如下代码:

/* USER CODE BEGIN Includes */
#include 
/* USER CODE END Includes */

然后修改main函数:

int main(void)
{
/* USER CODE BEGIN 1 */
uint8_t dat[2] = {0xBE, 0xEF};
uint8_t crc = 0;

/* USER CODE END 1 */
HAL_Init();

SystemClock_Config();

MX_GPIO_Init();
MX_CRC_Init();
MX_USART1_UART_Init();

/* USER CODE BEGIN 2 */
printf("Test CRC check:n");
crc = HAL_CRC_Accumulate(&hcrc, (uint32_t*)dat, 2);
printf("crc = %#xn", crc);
/* USER CODE END 2 */

while (1)
{
}
}

测试结果

测试结果如下:

mark

至此,我们已经学会如何使用硬件CRC校验SHT30的数据,下一节将讲述如何使用硬件SPI驱动LCD屏幕(ST7789)。

关键字:STM32Cube  SHT30 引用地址:【STM32Cube_16】使用硬件CRC校验数据(以SHT30为例)

上一篇:【STM32Cube_15】使用硬件I2C读取温湿度传感器数据(SHT30)
下一篇:【STM32Cube_17】使用硬件SPI驱动TFT-LCD(ST7789)

推荐阅读最新更新时间:2024-11-09 17:21

STM32Cube HAL库串口总结
定义了三种传输方式:阻塞传输,中断传输、DMA传输 HAL_UART_Transmit HAL_UART_Receive HAL_UART_Transmit_IT HAL_UART_Receive_IT HAL_UART_Transmit_DMA HAL_UART_Receive_DMA 此外还定义了两个中断回调函数,供中断和DMA使用,分别在数据传输一半和完成时使用 voidHAL_UART_TxCpltCallback(UART_HandleTypeDef *huart); void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef*huar
[单片机]
STM32Cube.AI将神经网络转换为STM32的优化代码
STM32Cube.AI是业界最先进的工具包,能够与流行的深度学习库互操作,以转换任何用于 STM32 微控制器的人工神经网络( MCU)运行优化推理。该软件套件包括 X-Cube 扩展软件X-CUBE-AI 、为我们的SensorTile 开发套件 (STEVAL-STLKT01V1)提供应用示例的功能包FP-AI-SENSING1,以及对我们的ST BLE 传感器的更新为功能包的演示提供 GUI 和控件的 iOS 和 Android 应用程序。仅发布这些解决方案已经是一个开创性的公告,因为目前没有任何工具可以与此功能集相媲美。然而,STM32Cube.AI 不仅仅是一个简单的工具包,而是反映了我们希望通过将神经网络带给所有 S
[单片机]
【STM32Cube_14】使用硬件I2C读写环境光强度传感器(BH1750)
本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件I2C外设读取环境光强度传感器数据(BH1750)。 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): BH1750模块 BH1750FV1是两线式串行总线接口(IIC)的16位数字输出型环境光强度传感器,利用它的高分辨率可以探测较大范围内的光照强度变化(1lx - 65535lx)。 BH1750的原理图如下: 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码; 2.生成MDK工程 选择芯片型号 打开STM32CubeMX,打开
[单片机]
【STM32Cube_14】使用<font color='red'>硬件</font>I2C读写环境光强度传感器(BH1750)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved