使用AM3358进行开发,在进行pin mux操作时,
意外发现,我的板子的AM3358芯片的Control Module寄存器无法写入,从而导致无法正常操作芯片的管脚输入和输出。
开机复位时Control Module的寄存器,也与TI官网手册的复位值不一样,
读取Control Module的device_id等寄存器值正确,应该说明读取Control Module寄存器的值是正确的。
下图为读取的寄存器值。
从上图可以看出,地址0x44E10600是Control Module中device_id的地址,其值读取出来的是0x2B94402E。
与下图手册中对device_id的描述是一致的。
对Control Module寄存器写的示例代码如下所示:
HWREG(SOC_CONTROL_REGS + CONTROL_CONF_UART_RXD(0)) = 0x0000001F;
HWREG(SOC_CONTROL_REGS + CONTROL_CONF_UART_TXD(0)) = 0x0000001F;
HWREG(SOC_CONTROL_REGS + CONTROL_CONF_UART_RXD(1)) = 0x00000030;
HWREG(SOC_CONTROL_REGS + CONTROL_CONF_UART_TXD(1)) = 0x00000010;
或者如下所示:
*((volatile unsigned int *)0x44E10970) = 0x0000001F;
*((volatile unsigned int *)0x44E10974) = 0x0000001F;
*((volatile unsigned int *)0x44E10980) = 0x00000030;
*((volatile unsigned int *)0x44E10984) = 0x00000010;
但是各寄存器的结果总是如下图所示,没有变化。在掉电后,开机,各寄存器值也是如下图所示。
烦请各位路过的英雄豪杰给指点指点,不胜感激。


