天嵌 ARM开发社区

 找回密码
 注册
查看: 2561|回复: 3

急问 arm9 spi通讯!!!

[复制链接]
李旭杰 发表于 2010-3-19 18:39:23 | 显示全部楼层 |阅读模式
volatile unsigned long *spi_clkcon;
        volatile unsigned long *spi_gpecon;               
        volatile unsigned long *spi_spsta0;
        volatile unsigned long *spi_sppin0;
        volatile unsigned long *spi_sppre0;
        volatile unsigned long *spi_sptdat0;
        volatile unsigned long *spi_sprdat0;
        

        spi_clkcon = ioremap(0x4C00000C,4);

        spi_gpecon = ioremap(0x56000040,4);        

        spi_spcon0 = ioremap(0x59000000,4);

        spi_spsta0 = ioremap(0x59000004,4);

        spi_sppin0=  ioremap(0x59000008,4);

        spi_sptdat0 =ioremap(0x59000010,4);

        spi_sprdat0 =ioremap(0x59000014,4);
寄存器设置:
*spi_clkcon |= (1<<18);

*spi_spcon0=(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);

//polling,un-sck,slave,high,format A,nomal

*spi_sppin0=(0<<2)|(1<<1)|(0<<0);

//Multi Master error detect disable,reserved,release

*spi_gpecon=(*spi_gpecon&(~((3<<22)|(3<<24)|(3<<26)))) | (2<<22) | (2<<24) | (2<<26);

从机获取数据:
*spi_sptdat0=0xff;//往发送寄存器送数
while(!(*spi_spsta0&0x01));等待标志位置1
ADRXdata[0]= *spi_sprdat0;//从接受寄存器获取数据

在终端下看,主机发送数据正常。可主端启动spi后,从端发送标志位(spi_spsta0最低位)始终无法置1(while陷入死循环),也就无法接下来从接受寄存器获得数据。
这是什么原因呢?望高手指点!
亚瑟王 发表于 2010-3-20 15:20:48 | 显示全部楼层
建议不要重复发帖,这是另外一个帖子的解答:http://bbs.embedsky.net/viewthre ... &extra=page%3D2
回复

使用道具 举报

 楼主| 李旭杰 发表于 2010-3-20 15:45:09 | 显示全部楼层
这两个问题并不一样,前面那个我已经解决了。
回复

使用道具 举报

亚瑟王 发表于 2010-3-22 11:13:04 | 显示全部楼层
在2440的datasheet中的描述是:SPTDATn寄存器有了数据,就会自动清零,它不清零,那就表明SPTDATn没有数据进入。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-19 20:36 , Processed in 2.038050 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表