找回密码
 立即注册
查看: 3860|回复: 29

【RTOS/uCOS-II + U盘/USB_MSC + 文件系统/znFAT】@STC32G

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-1-23 16:23:27 | 显示全部楼层 |阅读模式
本帖最后由 tzz1983 于 2024-4-3 19:28 编辑

RTOS/uCOS-II + U盘/USB_MSC + 文件系统/znFAT】@STC32G
介绍:
1.MSC-U盘例程是在中断里执行代码,CPU占有率太高,本贴使用RTOS分配CPU资源,

  将USB代码转移到任务里去,USB_MSC持续读写文件时CPU占用率为9%,
  USB_MSC无读写操作时CPU占用率为1%。
2.为了读出文件内容,加入了znFAT,尽在上电启动时使用znFAT读出文件内容。
   以避免znFAT和USB_MSC发生访问冲突。
3.存储介质为 W25Q128,全程 DMA-SPI 读写,几乎不占用CPU
4.项目中多处循环等待标志的节点改为阻塞延时等待,释放CPU,RTOS的特色。

特点:
1.已加入的应用有USB_MSC + znFAT,CPU占用率仍保持低水平,可加入许多其它应用。
2.USB_MSC 与znFAT共存,作为MCU与PC之间的通信通道。
3.SPI使用DMA方式访问FLASH,DMA完成后在中断里发送一个信号量激活任务,
   数据传送不占用CPU资源,和RTOS配合很完美。

本文可验证本人移植的UCOSII.
文中有许多RTOS的一些典型使用方法,将中断代码分配到任务,
利用阻塞查询标志,信号量同步等,可作为参考。


电脑上编辑文本,串口printf显示文件内容
捕获2.JPG

代码执行printf截图:
捕获1.JPG

代码:
UCOSII_MSC_znFAT.rar (1.79 MB, 下载次数: 289)


3 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-1-27 14:50:41 | 显示全部楼层
上次传上来的代码有BUG,在软定时器调用的时候无意触发了阻塞,
忘记了UCOS软定时器内不允有等待类的代码,今天重新传上代码.
SPI用上DMA了,现在连续读写文件,CPU占用率9%


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:403
  • 最近打卡:2025-04-29 08:28:43

12

主题

319

回帖

2017

积分

金牌会员

积分
2017
发表于 2024-1-29 13:28:53 | 显示全部楼层
谢谢分享
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 2024-2-9 09:41:40 | 显示全部楼层
龙年新春捷
STC8H2K32U-45MHz-LQFP32/TSSOP28 的 USB 型 MCU 已开始制造光罩流程中
RMB1.3 的 USB, STC8H2K32U-45MHz-LQFP32/TSSOP28/20,SOP16, 4月开始供货
51世界火热的夏天全面来临 全面 进入 USB 时代 !新增硬件32位乘除法器MDU32C
硬件USB 支持 仿真/下载, RTC 实时时钟, 年/月/日/时/分/秒,星期
真12位ADC, 144MHz-16位高级PWM新增硬件移相功能

32K Flash, 2.5k SRAM, USB, 双串口/I2C/SPI, 轨到轨比较器,12位ADC, PWM
串口1/串口2:

===都支持串口接收硬件超时侦测硬件奇偶校验
===都支持帧错误数据检测自动地址识别
T11,强大的24位低功耗定时器/系统定时器,支持低功耗唤醒
P1.2口在P5.4口上共享P1.0/P1.1的全部数字功能可以交换

STC8H2K32U51成为永恒的经典:钻石恒久远51永流传


======================================================================

RMB0.99 的 USB, STC8H2K08U-45MHz-TSSOP20/SOP16,已开始供货
51世界火热的夏天全面来临 全面 进入 USB 时代 !

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-04 22:11:37
已绑定手机

36

主题

287

回帖

824

积分

高级会员

积分
824
发表于 2024-2-22 22:59:31 来自手机 | 显示全部楼层
问一下,就是FLASH的最小擦除单元是4KB了话,
znfat里的512B扇区清空怎么适配?
真要4KB全部擦掉再写回去3KB吗?

点评

FLASH是4KB基本单位读写,在底层做了一个4KB的缓冲区,只有当访问扇区地址需要跨越时才真正有扇区读写操作,否则就是访问缓冲区替代扇区读写。这种操作对外屏蔽了底层属性,也就是对外接口不限制你写多少字节,也不需  详情 回复 发表于 2024-2-23 07:56
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-2-23 07:56:44 | 显示全部楼层
本帖最后由 tzz1983 于 2024-2-23 08:11 编辑
_NC*** 发表于 2024-2-22 22:59
问一下,就是FLASH的最小擦除单元是4KB了话,znfat里的512B扇区清空怎么适配?
真要4KB全部擦掉再写回去3KB ...

FLASH是4KB基本单位读写,在底层做了一个4KB的缓冲区,只有当访问扇区地址需要跨越扇区时才真正有扇区读写操作,否则就是访问缓冲区替代扇区读写。
这样做对外屏蔽了底层属性,也就是对外接口不限制写多少字节,也不需要对齐扇区操作,底层自动处理。
/*---------------------------------------------------------
//写数据,自动分扇区,不限制写入数据量
----------------------------------------------------------*/
void W25QXX_Write(u32 addr, u8 *buf, u32 Size);

这样做有两个好处:
1.提升小片数据的写入速度,比如连续写8次512字节,实际上只有一次扇区操作, 大幅提升了写入速度
2.减少RAM使用量,不管是MSC还是znFAT, 现在都只需要512字节缓冲了. 可以想象一下,如果MSC和znFAT都以4096为读写单位,那8K  xdata瞬间就被用完了

点评

这个确实高明!  发表于 2024-2-23 17:16
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-04 22:11:37
已绑定手机

36

主题

287

回帖

824

积分

高级会员

积分
824
发表于 2024-2-23 17:18:22 来自手机 | 显示全部楼层
哦对,还有就是fat32能在flash这么小的空间里建立吗?我看电脑上格式化stc 4M优盘,只有个fat和exfat选项啊,他们两个和fat32兼容吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-04 22:11:37
已绑定手机

36

主题

287

回帖

824

积分

高级会员

积分
824
发表于 2024-2-23 17:31:52 来自手机 | 显示全部楼层
2Mflash 优盘格式化好了,选的fat选项,没有钩选快速格式化。
我想用按照znfat书里的那样解析磁盘,物理模式但打开之后为什么MBR的DPT表显示东西不对?
都是按照书上来的,在其他U盘SD卡上解析没问题,但就在2M模拟优盘上显示这个,这是为什么啊
IMG_20240223_172721.jpg

点评

znFAT只支持一部分FAT格式, 并没有全支持 [attachimg]35857[/attachimg] 实际使用时, 需要用znFAT格式化, 如果用PC格式化, znFAT可能无法识别 还有就是znFAT无法格式化小于8M的盘  详情 回复 发表于 2024-2-23 18:53
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-2-23 18:53:26 | 显示全部楼层
_NC*** 发表于 2024-2-23 17:31
2Mflash 优盘格式化好了,选的fat选项,没有钩选快速格式化。
我想用按照znfat书里的那样解析磁盘,物理模 ...

znFAT只支持一部分FAT格式, 并没有全支持
截图202402231851291472.jpg

实际使用时, 需要用znFAT格式化, 如果用PC格式化, znFAT可能无法识别
还有就是znFAT无法格式化小于8M的盘
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 2024-3-9 22:32:48 | 显示全部楼层
有兄弟说,能再给些您验证过的
【小 GUI,TFT, OLED12864, LCD12864】
加到 您这个综合的系统中大家直接套用就好了

点评

严格来说,我是一位“散修”, 很少用现有的套路。 虽然我也用LCD,但基本上是从底层驱动到页面全是自己写的。 你说的套路,我先去了解一下别人的套路,过段时间看看能不能轻易的加进来  详情 回复 发表于 2024-3-10 08:18
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 00:01 , Processed in 0.134440 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表