几种T卡座的检测方法

最近整理了几种T卡座的资料,软件修改方法各不相同,具体如下:

第一种:低电平检测,这种是最常规的一种T卡,软件里面默认的也是这种:
io_def.h中定义为:

#define SD_CLK_DIR_IN()      {GPIOADIR |= BIT(6); GPIOAPU  |= BIT(6);}
#define SD_CLK_IN_DIS_PU10K() {GPIOADIR |= BIT(6); GPIOAPU  &= ~BIT(6);}
#define SD_CLK_DIR_OUT()    {GPIOAPU  &= ~BIT(6); GPIOADIR &= ~BIT(6);}
#define SD_MUX_DETECT_INIT() {GPIOADE |= BIT(6); GPIOAPU  |= BIT(6); GPIOADIR |= BIT(6);}
#define SD_MUX_IS_ONLINE()      ((GPIOA & BIT(6)) == 0)

原理图如下:CD脚为检测脚,未插入T卡的时候CD为悬空,插入T卡之后CD脚对地短路,所以软件检测到低电平是识别为T卡插入。
在这里插入图片描述
实物图如下:
在这里插入图片描述
第二种:高电平检测
io_def.h中定义为:

#define SD_CLK_DIR_IN()        {GPIOADIR |= BIT(6); GPIOAPD |= BIT(6);}
#define SD_CLK_IN_DIS_PU10K()  {GPIOADIR |= BIT(6); GPIOAPU  &= ~BIT(6);}
#define SD_CLK_DIR_OUT()      {GPIOAPD  &= ~BIT(6); GPIOADIR &= ~BIT(6);}
#define SD_MUX_DETECT_INIT()  {GPIOADE |= BIT(6); GPIOAPD |= BIT(6);GPIOADIR |= BIT(6);}
#define SD_MUX_IS_ONLINE()     ((GPIOA & BIT(6))>>6)

原理图如下:SWITCH脚为检测脚,未插入TF卡的时候SWITCH为悬空,插入T卡之后SWITCH脚对 CLK 短路,所以软件检测到高电平是识别为T卡插入。
在这里插入图片描述
实物图如下:
在这里插入图片描述
第三种:不带检测脚的卡座
这种卡座有点特殊,因为硬件上不带检测脚,这个时候就需要使用软件来检测了:
config.h中修改:

#define SD_SOFT_DETECT_EN      1   //是否使用软件检测 (SD发命令检测)
#define SDCLK_MUX_DETECT_SD   0   //是否复用SDCLK检测SD卡
#define SD0_MAPPING           SD0MAP_G3   //对应硬件即可
#define SD1_MAPPING           SD0MAP_G4   //对应硬件即可

配置工具中:选择软件检测即可
在这里插入图片描述
实物图如下:
在这里插入图片描述
市面上所有的T卡检测的原理不外乎这三种。

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值