使用STM32F1能实现USB和fatfs同时访问SD卡吗
使用STM32F1能实现USB和fatfs同时访问SD卡吗,想实现1S写一次数据到SD卡,同时实现随时插USB线连接电脑查看数据,分开都已实现,一起的话就是实现不了。请各位大神指点指点,给个思路就行。万分感谢!可以实现,如果USB是MSC的话,USB的处理就是在中断里,访问SD卡的时候一定要在SD卡空闲的时候,通过不断查询标志位实现。如果FatFS使用了DMA读写sd卡,还要保证DMA和SD的优先级在USB之上。
如果是USB不在中断里处理,那就好办多了,随便搞个标志位就好了。 搞不懂,难道SD卡还想接F1上的两种接口?
用SPI接SD卡,用USB接PC,不就能独立了么? 楼主是想用ST做USB读卡器的功能,楼主搜一下关于这方面的资料吧。 概念都不清楚,STM32就一个CPU核,怎么样算是同时访问?;P
USB Device只是一个外设,CPU访问它,也访问SDIO外设。
fatfs是一套软件程序库,CPU执行其中的功能,间接对SDIO外设进行访问。
你想的功能,是软件上如何规划的问题。两个部分都想用SDIO,那么得有互斥的机制。可以考虑作为RTOS的两个任务来处理。 学习了。 谢谢各位的回复,尤其谢谢@cruelfox ,按照你的方法我使用正点原子的代码做了个测试,用的UCOSIII,有盘符但是盘是空的。麻烦@cruelfox给我看看,谢谢!static void AppTaskUpdate(void *p_arg)
{
OS_ERR err;
CPU_SR_ALLOC();
u8 offline_cnt=0;
u8 USB_STA=0;
u8 Divece_STA=0;
u8 i=0,err_back=0;
u16 werr=0,rerr=0;
(void)p_arg;
USB_GPIO_init();
Set_USBClock();
USB_Interrupts_Config();
USB_Init();
while(1)
{
if(bDeviceState==CONFIGURED)
{
OSMutexPend (&TEST_MUTEX,0,OS_OPT_PEND_BLOCKING,0,&err); //请求互斥量
bsp_DelayMS(5);
if(USB_STATUS_REG&0x03)//USB读写
{
err_back=0x80;
}else break;//USB空闲退出
if(USB_STA!=USB_STATUS_REG)//状态改变
{
if(USB_STATUS_REG&0x01)//正在写
{
USB_STATUS_REG&=0xFD;//清除读标志
}
if(USB_STATUS_REG&0x02)//正在读
{
USB_STATUS_REG&=0xFE;//清除写标志
}
if(USB_STATUS_REG&0x04)
{
werr++;
}
if(USB_STATUS_REG&0x08)
{
rerr++;
}
USB_STA=USB_STATUS_REG;//记录最后标志
}
if(Divece_STA!=bDeviceState)
{
Divece_STA=bDeviceState;
}
i++;
if(i==200)//200ms
{
i=0;
if(USB_STATUS_REG&0x10)
{
offline_cnt=0;//USB连接,清除offline_cnt
bDeviceState=CONFIGURED;
}else//ûÓеõ½ÂÖѯ
{
offline_cnt++;
if(offline_cnt>10)bDeviceState=UNCONNECTED;//2s没有在线标志标志USB拔出
}
if(err_back&0x80)
{
err_back++;
if((err_back&0x07)==0x07)
{
err_back=0;
}
}
USB_STATUS_REG=0;
}
OSMutexPost(&TEST_MUTEX,OS_OPT_POST_NONE,&err);
}
LED2_TOGGLE;
OSTimeDlyHMSM(0, 0, 0, 5, OS_OPT_TIME_HMSM_STRICT,&err);
}
}
你这个问题应该这样描述:
USB程序将SD卡用作MSC,
然后,还有一个程序要1S钟写一次SD卡数据。
需要修改USB例程。
有两种思路:
1. 定时写SD卡也用USB例程操作SD卡的接口。
2. 在SD卡驱动中添加互斥,并且要梳理两者逻辑。
个人觉得有点复杂,因为USB通信对时序要求挺高的。
@Dandjinh 你好,我的USB是MSC,USB的处理在中断里,采用是SPI连接SD卡的,使用了DMA但是没有使用DMA中断,您说的查询标志位,在USB里怎么实现查询标志位?在中断里查询? 已解决
页:
[1]
2