conspec 发表于 2013-8-8 17:53:40

WINCE SPI1 寄存器无法修改



1.

pSPIregs = (volatile S3C6410_SPI_REG *)DrvLib_MapIoSpace(S3C6410_BASE_REG_PA_SPI1, sizeof(S3C6410_SPI_REG), FALSE);


2.
pSPIregs->CH_CFG   = CPOL_FALLING|CPHA_FORMAT_A;
pSPIregs->CLK_CFG    = 0x0502;
pSPIregs->MODE_CFG   = MODE_DEFAULT;



2配置后打印出来的寄存器和没配置的一样?为什么这些寄存器无法更改?

SPI Config= 00000040
SPI Clock Config = 00000000
SPI Mode Config = 00000000

请大家给予帮助,谢谢!




conspec 发表于 2013-8-8 20:38:24

飞凌提供的驱动也无法正常使用,示波器里根本就没有任何CLOCK的波形。

但是通过上面的操作对于GPIO就可以,SPI0和SPI1的寄存器都无法修改。

飞凌-路飞 发表于 2013-8-8 21:44:56

楼主是自己写的一个spi的驱动还是修改的我们写好的呢?

conspec 发表于 2013-8-9 10:23:06

首先感谢路飞的回复,我使用了你们的驱动(TE6410 + SPI驱动),反馈的寄存器都是最原始的状态,只能读不能改,后来我自己搞一了个非常简单的驱动,也无法修改该寄存器,在网上找了一个叫MEMMgr的驱动调试工具(直接写地址的)也是只能读不能改,这个问题困惑我两周了{:soso_e134:}

conspec 发表于 2013-8-9 10:24:37

本帖最后由 conspec 于 2013-8-9 10:34 编辑

飞凌-路飞 发表于 2013-8-8 21:44 static/image/common/back.gif
楼主是自己写的一个spi的驱动还是修改的我们写好的呢?
都是下载最新的文件。

是操作系统配置导致的吗?

查了一下微软的资料:


User
                0x70000000 - 0x7FEFFFFF
                255 MB
                Shared system heap
                Shared heap between the kernel and processes.
          Kernel and kernel servers can allocate memory in the heap and write to it.
          Read-only for user processes.
          Enables a process to get data from a server without having to make a kernel call.



是不是驱动配置的有问题?

conspec 发表于 2013-8-9 23:58:35

终于找到问题了:

#if(SPI_SELECT == SPI1) //使用SPI1
    pSYSCONregs->PCLK_GATE |= SPI1_POWER_ON;
#else
    pSYSCONregs->PCLK_GATE |= SPI0_POWER_ON;
#endif

必须把SPI对应PCLK的Enable位打开才可以对SPI Register Controller进行读写,这个芯片文档上我是没找到。

飞凌-路飞 发表于 2013-8-10 08:46:03

恭喜楼主,其实有时候问题是需要自己孜孜不倦的钻研下去的,这样的解决方法才属于自己!
页: [1]
查看完整版本: WINCE SPI1 寄存器无法修改