找回密码
 立即注册
楼主: tzz1983

U盘 + FatFS文件系统 + uC/OS-II,RTOS 综合实战@Ai8051U实验箱, 解析位图文件

  [复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:96
  • 最近打卡:2025-09-24 10:04:37
已绑定手机

0

主题

36

回帖

458

积分

中级会员

积分
458
发表于 2025-4-3 10:38:33 | 显示全部楼层
学习学习
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-11-06 09:35:08
已绑定手机

0

主题

10

回帖

86

积分

注册会员

积分
86
发表于 2025-4-22 12:33:34 来自手机 | 显示全部楼层
666可以
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:305
  • 最近打卡:2025-12-17 22:20:07
已绑定手机

6

主题

256

回帖

1527

积分

金牌会员

积分
1527
发表于 2025-7-18 20:56:28 | 显示全部楼层
学习
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-12-15 14:33:55

11

主题

50

回帖

565

积分

高级会员

积分
565
发表于 2025-7-24 20:53:59 | 显示全部楼层
按您的工程,我把SPI修改成QSPI,无法格式化,请问大概是哪里的问题?

点评

1.问题大概率出现在本地读写FLASH相关的基础代码。无法正常读写磁盘时就无法正常格式化。 先在本地调试好正常读写FLASH的基础代码,可快速查找出此类问题。 2.与USB_MSC,FATFS适配的问题,本例中因为同时使用两者,  详情 回复 发表于 2025-7-25 08:19
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:30
  • 最近打卡:2025-11-12 16:20:46

35

主题

1147

回帖

2848

积分

荣誉版主

积分
2848
发表于 2025-7-25 08:19:58 | 显示全部楼层
cyf1*** 发表于 2025-7-24 20:53
按您的工程,我把SPI修改成QSPI,无法格式化,请问大概是哪里的问题?

1.问题大概率出现在本地读写FLASH相关的基础代码。无法正常读写磁盘时就无法正常格式化。
先在本地调试好正常读写FLASH的基础代码,可快速查找出此类问题。
2.与USB_MSC,FATFS适配的问题,本例中因为同时使用两者,两者定义的扇区大小须相同才可正常使用(例中是设定为512Byte一个扇区)。
由此延伸出另一个问题需引起注意: FLASH自身是4096/扇区,中间需要一些处理才能更好的适应 USB_MSC/FATFS 以512为单位的访问。

注重细节,每个很小的失误都可能导致失败,祝您早日找出问题
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-12-15 14:33:55

11

主题

50

回帖

565

积分

高级会员

积分
565
发表于 2025-7-26 11:44:46 | 显示全部楼层
tzz1*** 发表于 2025-7-25 08:19
1.问题大概率出现在本地读写FLASH相关的基础代码。无法正常读写磁盘时就无法正常格式化。
先在本地调试好 ...

忽略掉FATFS,只调试USB_MSC和W25Q128,目前是能格式化U盘了,但是又出了一个新的问题,每次重新上电都要格式化U盘,这个也是跟w25q128读写函数有关吗?
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-12-15 14:33:55

11

主题

50

回帖

565

积分

高级会员

积分
565
发表于 2025-7-26 11:46:27 | 显示全部楼层
tzz1*** 发表于 2025-7-25 08:19
1.问题大概率出现在本地读写FLASH相关的基础代码。无法正常读写磁盘时就无法正常格式化。
先在本地调试好 ...

W25Q128的驱动用的是官方的QSPI驱动,只是把您w25qxx的读写函数修改了一下,由SPI_DMA驱动改为QSPI驱动

点评

具体细节很难用“猜” 来获取答案的。 再多花些时间去调试或好好想想吧。 如果说当前可以格式化,上电以后又不能识别上次已格式化的盘了(就是又提示需要格式化) 这种问题大概率原因还是 -> 数据没有正确的写入FLA  详情 回复 发表于 2025-7-28 08:04
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:30
  • 最近打卡:2025-11-12 16:20:46

35

主题

1147

回帖

2848

积分

荣誉版主

积分
2848
发表于 2025-7-28 08:04:02 | 显示全部楼层
cyf1*** 发表于 2025-7-26 11:46
W25Q128的驱动用的是官方的QSPI驱动,只是把您w25qxx的读写函数修改了一下,由SPI_DMA驱动改为QSPI驱动 ...

具体细节很难用 “猜” 来获取答案的。 再多花些时间去调试或好好想想吧。

如果说当前可以格式化,上电以后又不能识别上次已格式化的盘了(就是又提示需要格式化)
这种问题大概率原因还是 -> 数据没有正确的写入FLASH. 只是这个问题延迟到了下次启动时,系统检查U盘格式时才会发现。
特别注意:如果 FALSH 驱动有中间缓冲层,一定要记得定时+或下电前把缓冲数据写进FLASH
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:146
  • 最近打卡:2025-12-18 08:36:11
已绑定手机

0

主题

12

回帖

740

积分

高级会员

积分
740
发表于 2025-8-15 08:04:09 | 显示全部楼层
U功能在数据临时采集太实用了
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-12-18 00:38:50
已绑定手机

3

主题

24

回帖

858

积分

高级会员

积分
858
发表于 2025-8-15 15:46:54 | 显示全部楼层
学AI8051U的定时器中断,就像给芯片装了个“智能闹钟”,不用一直盯着时间,到点了它会主动“提醒”,这比用循环死等高效多了。

刚开始觉得定时器寄存器密密麻麻的,什么TH0、TL0、TCON,光看手册就头大。实际上手才发现,核心就是“设定时间”和“开中断”两步。比如想让LED每1秒闪一次,先算好定时器的初值——8051的主频是12MHz,一个机器周期是1微秒,要定时50毫秒,就给TH0和TL0装对应的值,让它数数到顶就“触发”。这就像给闹钟设好倒计时,时间到了它就响。

中断函数是个“小秘书”。一旦定时器触发,主程序会立刻暂停,跳去执行中断函数里的内容,比如让LED翻转一下,完了再回去继续干正事。刚开始没掌握窍门,中断函数里写了一堆代码,结果主程序卡得要死,后来才明白,中断里要“速战速决”,就像秘书汇报完工作就退下,别耽误老板干活。

最惊喜的是定时器的“嵌套”用法。比如用定时器0控制LED闪烁,同时用定时器1做个秒表计数,两个中断各干各的,互不耽误。这比用一个循环同时管两件事清爽多了,就像家里两个闹钟,一个叫起床,一个提醒做饭,各司其职。

当然也踩过坑:忘了开总中断EA=1,结果定时器跑断腿也没反应;初值算错了,本来想1秒闪一次,结果变成了狂闪。后来发现,算初值时用计算器先算好,再在程序里用宏定义写清楚,就不容易错。

现在用定时器中断做小项目,比如模拟交通灯、倒计时器,感觉芯片像有了“时间观念”。从一开始对着初值公式发呆,到现在能灵活控制多个定时任务,才明白这东西的妙处——它让芯片从“被动执行”变成了“主动规划”,这大概就是学单片机最有成就感的时刻吧。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-12-18 13:39 , Processed in 0.118419 second(s), 101 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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