TCC8900有8个SD卡,不过都是复用的。
在寄存器组织方面,SD以MMC_Controller为中心分为两个核心(分别为Core0和Core1),每个核心分别有两个slot,它们的地址分配情况是:
共有四个SLOT。
在注册表里面可以看到:TCC8900用到了SLOT0 跟SLOT2.
"SdhcIPcount"=dword:2
"SlotCount_IP0"=dword:1
"SlotCount_IP1"=dword:1
"MemBase0_0"=dword:F05A0000
"MemLen0_0"=dword:100
"MemBase0_1"=dword:0 ;;SLOT1没有用
"MemLen0_1"=dword:0
"Irq0"=dword:2C
"MemBase1_0"=dword:F05A0200
"MemLen1_0"=dword:100
"MemBase1_1"=dword:0 ;;SLOT3没有用
"MemLen1_1"=dword:0
"Irq1"=dword:2D
0XF0FA0800 SDPORTCTRL SD Port Configure Registers
通过配置 0xF0FA0800 的寄存器,可以将SD/MMC_Controller0和SD/MMC_Controller1分配到8个Port中的任意一个,例如在程序里面可以看到:
BITCSET(pSDCTRL->SDPORTCTRL, 0x00007777, 0xF0003512);这个中间的3512,表示PORT3对应SLOT3,PORT5对应SLOT2,PORT1对应SLOT1,PORT2对应SLOT0.
结合注册表可以得出。CORE0用到了SLOT0对应SD 的PORT2.
CORE1用到了SLOT2 对应SD 的PORT5.
这里如果要将SD的 SLOT0改成其它的PORT口,
1、只需要将对应的GPIO口设成SD卡功能模式,
2、将SDPROTCTRL 的最后一位数字改成相应的PORT值。
这里做了实验PORT7按这样做不行,不知是为什么?
在PORT1 上做了实验是OK的。
欢迎你加入:149818111