TCC89X 调试(二) 更改SD卡PORT

TCC8900有8个SD卡,不过都是复用的。
在寄存器组织方面,SD以MMC_Controller为中心分为两个核心(分别为Core0和Core1),每个核心分别有两个slot,它们的地址分配情况是:

TCC89X 调试(二) 更改SD卡PORT_第1张图片

 

共有四个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

你可能感兴趣的:(c)