在swm341单片机中用C语言写一个硬件QSPI的例程
时间: 2024-02-23 20:59:09 浏览: 289
下面是在swm341单片机中用C语言编写硬件QSPI的一个简单例程:
```
#include "swm341.h"
void qspi_init(void)
{
// 使能QSPI时钟
CLK_EnableModuleClock(QSPI0_MODULE);
// 配置QSPI引脚
SYS->GPC_MFPH &= ~(SYS_GPC_MFPH_PC12MFP_Msk | SYS_GPC_MFPH_PC13MFP_Msk | SYS_GPC_MFPH_PC14MFP_Msk | SYS_GPC_MFPH_PC15MFP_Msk);
SYS->GPC_MFPH |= (SYS_GPC_MFPH_PC12MFP_QSPI0_MOSI | SYS_GPC_MFPH_PC13MFP_QSPI0_MISO | SYS_GPC_MFPH_PC14MFP_QSPI0_CLK | SYS_GPC_MFPH_PC15MFP_QSPI0_SS);
// 配置QSPI控制器
QSPI_Open(QSPI0, QSPI_MASTER, QSPI_MODE_0, 8, QSPI_CLK_DIV(2));
// 配置QSPI Flash
QSPI_SetFlashMemMappedMode(QSPI0, QSPI_FLASH_MEM_MAPPED);
// 使能QSPI中断
QSPI_EnableInt(QSPI0);
}
void qspi_read(uint32_t addr, uint32_t size, uint8_t *data)
{
// 配置QSPI命令
QSPI_SetCmd(QSPI0, QSPI_FLASH_READ_CMD, QSPI_FLASH_READ_ADDR_BYTES, QSPI_FLASH_READ_DUMMY_CYCLES);
// 配置QSPI地址
QSPI_SetAddr(QSPI0, addr, QSPI_FLASH_READ_ADDR_BYTES);
// 配置QSPI数据
QSPI_SetData(QSPI0, data, size);
// 启动QSPI传输
QSPI_Trigger(QSPI0);
}
void qspi_write(uint32_t addr, uint32_t size, uint8_t *data)
{
// 配置QSPI命令
QSPI_SetCmd(QSPI0, QSPI_FLASH_WRITE_CMD, QSPI_FLASH_WRITE_ADDR_BYTES, QSPI_FLASH_WRITE_DUMMY_CYCLES);
// 配置QSPI地址
QSPI_SetAddr(QSPI0, addr, QSPI_FLASH_WRITE_ADDR_BYTES);
// 配置QSPI数据
QSPI_SetData(QSPI0, data, size);
// 启动QSPI传输
QSPI_Trigger(QSPI0);
}
```
在这个例程中,我们使用了swm341单片机的QSPI控制器来实现与QSPI Flash的通信。首先,在qspi_init函数中,我们使能了QSPI时钟,并配置了QSPI引脚。然后,我们配置了QSPI控制器和QSPI Flash,并启用了QSPI中断。在qspi_read和qspi_write函数中,我们分别配置了QSPI命令、地址和数据,并启动了QSPI传输。注意,在实际应用中,我们还需要进行错误处理和超时处理等。
阅读全文
相关推荐
















