CubeMX+STM32+SD+DMA+FATFS文件写入错误的解决
环境:CubeMX(5.2.1)HAL库(1.15.0)STM32F765IIK(主频180MHz,关闭Cache)SDMMC2+DMAFATFS(R0.12c)测试程序:void sdcard_test_task(void *p) {
static FATFS fs;
FIL fil;
uint32_t bw;
const char *w = "1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234\r\n"
"1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234\r\n"
"1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234\r\n"
"1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234\r\n"
"1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234\r\n"
"1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234\r\n"
"1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234\r\n"
"1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234\r\n"
"1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234_1234\r\n";
if (f_mount(&fs, "0:", 1)) {
__nop();
return;
}
while (1) {
if (f_open(&fil, "ggg.txt", FA_OPEN_ALWAYS | FA_WRITE) == FR_OK) {
f_lseek(&fil, f_size(&fil));
f_write(&fil, w, strlen(w), &bw);
f_close(&fil);
} else {
__nop();
}
HAL_Delay(100);
}
}
问题:
程序运行一段时间后f_open一直返回FR_LOCKED错误
解决:
重新打开CubeMX,把FATFS的这栏选成Enable即可
其他:
这个版本的CubeMX和HAL库使用SD卡必须打开DMA
产生TXUNDERR错误:
解决办法是打开I,DCache
别忘了栈可能要调大
我在STM32F429I-DISCOVERY这个板子上也试过用CubeMX(5.4.0)生成的代码(HAL库V1.24.1)调试SD卡,也遇到了类似的问题。具体是SD卡可以写但不能读,读出错的原因是SDIO_FLAG_RXOVERR,解决办法是把HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B)中的SDIO_BUS_WIDE_4B改成SDIO_BUS_WIDE_1B 没有移植fatfs吗? 底层I/O有问题。
高频变压器磁芯利用率高(与单端电路相比)、电源电压利用率高(与后面要叙述的半桥电路相比)、输出功率大、两管基极均为低电平,驱动电路简单。
静态测试是通过使用直流电压表和负载电流计来分别测试电源的输出电压和输出电流
甚至会造成模块电源的损坏
为了抑制共模干扰
因此以更高的速度使用重型铣削钻头。
小型电子设备
共模电感有时候又叫共模扼流圈
电镀半孔可用于标准和高级PCB设计。
共模电感对交流电流起着阻碍的作用
页:
[1]