A31 STM32_HAL库函数 之 NAND通用驱动 -- B -- 所有函数的介绍及使用

本文详细介绍了STM32HAL库中用于NANDFlash控制的25个关键函数,包括初始化、擦除、读取、写入、ECC管理以及状态获取等操作,为开发者提供了全面的驱动函数指南。
摘要由CSDN通过智能技术生成

1 该驱动函数预览

序号函数名描述
1HAL_NAND_Init()初始化NAND闪存设备。
2HAL_NAND_DeInit()反初始化NAND闪存设备。
3HAL_NAND_MspInit()初始化MCU外设相关的NAND引脚或资源。
4HAL_NAND_MspDeInit()反初始化MCU外设相关的NAND引脚或资源。
5HAL_NAND_IRQHandler()NAND闪存中断处理程序。
6HAL_NAND_ITCallback()NAND闪存中断回调函数。
7HAL_NAND_ConfigDevice()配置NAND闪存设备。
8HAL_NAND_Read_ID()读取NAND闪存设备的ID。
9HAL_NAND_Reset()复位NAND闪存设备。
10HAL_NAND_Read_Page_8b()从NAND闪存设备中读取8位数据页。
11HAL_NAND_Read_Page_16b()从NAND闪存设备中读取16位数据页。
12HAL_NAND_Write_Page_8b()向NAND闪存设备中写入8位数据页。
13HAL_NAND_Write_Page_16b()向NAND闪存设备中写入16位数据页。
14HAL_NAND_Read_SpareArea_8b()从NAND闪存设备中读取8位备用区。
15HAL_NAND_Read_SpareArea_16b()从NAND闪存设备中读取16位备用区。
16HAL_NAND_Write_SpareArea_8b()向NAND闪存设备中写入8位备用区。
17HAL_NAND_Write_SpareArea_16b()向NAND闪存设备中写入16位备用区。
18HAL_NAND_Erase_Block()擦除NAND闪存设备的块。
19HAL_NAND_Read_Status()读取NAND闪存设备的状态。
20HAL_NAND_Address_Inc()NAND闪存地址自增函数。
21HAL_NAND_ECC_Enable()启用NAND闪存设备的ECC(错误校验和纠正)。
22HAL_NAND_ECC_Disable()禁用NAND闪存设备的ECC。
23HAL_NAND_GetECC()获取NAND闪存设备的ECC信息。
24HAL_NAND_GetState()获取NAND闪存设备的状态。
25HAL_NAND_Read_Status()读取 NAND Flash 的状态寄存器

以下是使用模板:

#include "stm32f4xx_hal.h"

int main(void) {
    // HAL初始化
    HAL_Init();
    
    // 初始化MCU外设相关的NAND引脚或资源
    HAL_NAND_MspInit();
    
    // 初始化NAND闪存设备
    HAL_NAND_Init();
    
    // 进行其他操作...
    
    // 配置NAND闪存设备
    HAL_NAND_ConfigDevice();
    
    // 从NAND闪存设备中读取ID
    HAL_NAND_Read_ID();
    
    // 读取NAND闪存设备的状态
    HAL_NAND_Read_Status();
    
    // 反初始化NAND闪存设备
    HAL_NAND_DeInit();
    
    // 反初始化MCU外设相关的NAND引脚或资源
    HAL_NAND_MspDeInit();
    
    return 0;
}

1.13 HAL_NAND_Write_Page_16b

函数名HAL_NAND_Write_Page_16b
函数原形HAL_StatusTypeDef HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pData, uint32_t Size)
功能描述以 16 位模式写入数据到 NAND Flash 的一页
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2pAddress:NAND Flash 内的地址,指向一个 NAND_AddressTypeDef 结构体
输入参数 3pData:要写入的数据缓冲区
输入参数 4Size:要写入的数据字节数
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.14 HAL_NAND_Read_SpareArea_8b

函数名HAL_NAND_Read_SpareArea_8b
函数原形HAL_StatusTypeDef HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pData, uint32_t Size)
功能描述以 8 位模式读取 NAND Flash 中的页的备用区数据
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2pAddress:NAND Flash 内的地址,指向一个 NAND_AddressTypeDef 结构体
输入参数 3pData:存储读取数据的缓冲区
输入参数 4Size:要读取的数据字节数
输出参数pData:存储读取数据的缓冲区
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.15 HAL_NAND_Read_SpareArea_16b

函数名HAL_NAND_Read_SpareArea_16b
函数原形HAL_StatusTypeDef HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pData, uint32_t Size)
功能描述以 16 位模式读取 NAND Flash 中的页的备用区数据
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2pAddress:NAND Flash 内的地址,指向一个 NAND_AddressTypeDef 结构体
输入参数 3pData:

存储读取数据的缓冲区 |
| 输入参数 4 | Size:要读取的数据字节数 |
| 输出参数 | pData:存储读取数据的缓冲区 |
| 返回值 | HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR |
| 先决条件 | 无 |
| 被调用函数 | 无 |


1.16 HAL_NAND_Write_SpareArea_8b

函数名HAL_NAND_Write_SpareArea_8b
函数原形HAL_StatusTypeDef HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pData, uint32_t Size)
功能描述以 8 位模式写入数据到 NAND Flash 的页的备用区
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2pAddress:NAND Flash 内的地址,指向一个 NAND_AddressTypeDef 结构体
输入参数 3pData:要写入的数据缓冲区
输入参数 4Size:要写入的数据字节数
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.17 HAL_NAND_Write_SpareArea_16b

函数名HAL_NAND_Write_SpareArea_16b
函数原形HAL_StatusTypeDef HAL_NAND_Write_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pData, uint32_t Size)
功能描述以 16 位模式写入数据到 NAND Flash 的页的备用区
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2pAddress:NAND Flash 内的地址,指向一个 NAND_AddressTypeDef 结构体
输入参数 3pData:要写入的数据缓冲区
输入参数 4Size:要写入的数据字节数
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.18 HAL_NAND_Erase_Block

函数名HAL_NAND_Erase_Block
函数原形HAL_StatusTypeDef HAL_NAND_Erase_Block(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress)
功能描述擦除 NAND Flash 中的一个块
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2pAddress:NAND Flash 内的地址,指向一个 NAND_AddressTypeDef 结构体
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.19 HAL_NAND_Read_Status

函数名HAL_NAND_Read_Status
函数原形uint32_t HAL_NAND_Read_Status(NAND_HandleTypeDef *hnand, uint32_t Timeout)
功能描述读取 NAND Flash 的状态寄存器
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2Timeout:超时时间(单位:毫秒)
输出参数
返回值uint32_t:NAND Flash 的状态寄存器的值
先决条件
被调用函数

1.20 HAL_NAND_Address_Inc

函数名HAL_NAND_Address_Inc
函数原形void HAL_NAND_Address_Inc(NAND_AddressTypeDef *pAddress)
功能描述自动增加 NAND Flash 地址指针
输入参数pAddress:NAND Flash 内的地址,指向一个 NAND_AddressTypeDef 结构体
输出参数pAddress:NAND Flash 内的地址,指向一个 NAND_AddressTypeDef 结构体
返回值
先决条件
被调用函数

1.21 HAL_NAND_ECC_Enable

函数名HAL_NAND_ECC_Enable
函数原形void HAL_NAND_ECC_Enable(NAND_HandleTypeDef *hnand)
功能描述启用 NAND Flash 的硬件 ECC
输入参数hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输出参数
返回值
先决条件
被调用函数

1.22 HAL_NAND_ECC_Disable

函数名HAL_NAND_ECC_Disable
函数原形void HAL_NAND_ECC_Disable(NAND_HandleTypeDef *hnand)
功能描述禁用 NAND Flash 的硬件 ECC
输入参数hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输出参数
返回值
先决条件
被调用函数

1.23 HAL_NAND_GetECC

函数名HAL_NAND_GetECC
函数原形uint32_t HAL_NAND_GetECC(NAND_HandleTypeDef *hnand, uint32_t Timeout)
功能描述读取 NAND Flash 的 ECC
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2Timeout:超时时间(单位:毫秒)
输出参数
返回值uint32_t:ECC 值
先决条件
被调用函数

1.24 HAL_NAND_GetState

函数名HAL_NAND_GetState
函数原形HAL_NAND_StateTypeDef HAL_NAND_GetState(NAND_HandleTypeDef *hnand)
功能描述获取 NAND Flash 的状态
输入参数hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输出参数
返回值HAL_NAND_StateTypeDef:NAND Flash 的状态
先决条件
被调用函数

1.25 HAL_NAND_Read_Status

函数名HAL_NAND_Read_Status
函数原形uint32_t HAL_NAND_Read_Status(NAND_HandleTypeDef *hnand, uint32_t Timeout)
功能描述读取 NAND Flash 的状态寄存器
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2Timeout:超时时间(单位:毫秒)
输出参数
返回值uint32_t:NAND Flash 的状态寄存器的值
先决条件
被调用函数

该文档修改记录:

修改时间修改说明
2024年4月30日第一次发布,介绍了该博客驱动所有函数的介绍及使用

总结

以上就是该博客驱动所有函数的介绍及使用的内容。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

常驻客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值