5505|14

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教pxa270+WIFI8686!!! [复制链接]

用的PXA270和USI的无线网卡 8686芯片组
接口用的SPI

通过打印信息看总是在读取芯片ID时候出错:
Chip(exp, val)= (000bh), ffffh)   //期望是000B ,实际FFFF
pxa_gspi_Init is fault !!!!!!!!!!!!!
If_Initialize is fault !!!!!!!!!!!!!xxxxxxxxxxxxxxx

看代码发现似乎是SPI初始化问题:
        ssp_init_hw(pHC);
        intr_init(pHC);   
        dma_init(pHC);   //没有用到DMA
           ......
         #if defined (GSPI8385)
                const WORD        chipid = 0x0004;
         #elif defined (GSPI8686)
                const WORD        chipid = 0x000b;

         #else
                const WORD        chipid = 0x000;
         #endif
                ssp_read_register((DWORD)pHC, ®val, 0x02);   //在这读寄存器,读出的值regval出错
         if (chipid != regval)
                {
                        GSPIMSG(1, (TEXT("Chip(exp, val)= (%04xh), %04xh)\n"), chipid, regval));        
                            //上面的信息在这里打印出来
                           pxa_gspi_Deinit((DWORD)pHC);
                        pHC = NULL;
                        goto funcFinal;
                }
     其中pxa_gspi_Init函数中对SPI的引脚做了初始化:我用的引脚是
#define                SSP_SCLK                        23
#define                SSP_SFRM                        24
#define                SSP_TX                        25
#define                SSP_RX                        26
#define                SSP_INTR                        22
ssp_init_hw函数中对其初始化:
         pHC->pGPIORegs->GPDR0 |= ((0x1U << 23) | (0x1U << 24) | (0x1U << 25));
        pHC->pGPIORegs->GPDR0 &= ~(0x1U << 26);
        //Set gpio24 to high
        pHC->pGPIORegs->GPSR0 |= (0x1U << 24);  // 输出1
        //Set the gpio 23 as function 2   sspsclk
        //25 as function 2                 ssptxd           
        //26 as function 1                  ssprxd
        pHC->pGPIORegs->GAFR0_U &= 0xFFC03FFF;
        pHC->pGPIORegs->GAFR0_U |= ((0x2U << 14) | (0x0U << 16) | (0x2U << 18) | (0x1U << 20));
        //wx_end change
        pHC->pSSPRegs->base.sscr0 = 0;
        pHC->pSSPRegs->base.sscr1 = 0;
       
        //        Sleep(0);        //JKU
        /// Configure the SSP CLK
#if (SSPCTRLER == 1)                                        ///Using SSP controller1
        pHC->pCLKRegs->cken |= (1<<23);

#elif (SSPCTRLER == 2)                                        ///Using SSP controller2
        pHC->pCLKRegs->cken |= (1<<3);
#elif (SSPCTRLER == 3)                                        ///Using SSP controller3
        pHC->pCLKRegs->cken |= (1<<4);
#endif ///SSPCTRLER
       
        pHC->pSSPRegs->base.sscr0 = SSCR0_SCR(clkdiv) | SSCR0_DSS(0x000f) | SSCR0_FRF(3);
        pHC->pSSPRegs->base.sscr1 = SSCR1_TTELP | SSCR1_TTE | SSCR1_TSRE | SSCR1_RSRE |
                                                                SSCR1_RFT(0x1) | SSCR1_TFT(0x1) | SSCR1_TRAIL;

        pHC->pSSPRegs->sspsp = SSPSP_SCMODE(0);
        pHC->pSSPRegs->ssto = 1;
        pHC->pSSPRegs->base.sscr0 |= SSCR0_SSE;

        set_GPIO_signal(pHC->pGPIORegs, SSP_RST, SIG_UP);
        udelay(pHC->pOSTRegs, 500);
        set_GPIO_signal(pHC->pGPIORegs, SSP_RST, SIG_DOWN);  //JKU: pin 11 to reset
        udelay(pHC->pOSTRegs, 5000);
        set_GPIO_signal(pHC->pGPIORegs, SSP_RST, SIG_UP);
        udelay(pHC->pOSTRegs, 500);

请教:现在的现象大概是哪里出了错误?是否是SPI初始化的问题!!!

最新回复

ding ding ding ding   详情 回复 发表于 2009-11-2 22:12
点赞 关注

回复
举报

83

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
spi读取错误,用spi读的时候多读几个字节数据出来,可能冗余数据的原因。
比如一个寄存器的值是0xabcd,用spi读出来可能是0xff 0xff 0xcd 0xab,前两个字节冗余
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
关注WIFI
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
周末不想看CODE  ! 支持一下
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 1 楼 csdeny 的回复:
spi读取错误,用spi读的时候多读几个字节数据出来,可能冗余数据的原因。
比如一个寄存器的值是0xabcd,用spi读出来可能是0xff 0xff 0xcd 0xab,前两个字节冗余

貌似不是这个问题!
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
请问:
   我对GPIO  22~26进行如下初始化,是否正确
#define SSP_SCLK 23
#define SSP_SFRM 24
#define SSP_TX 25
#define SSP_RX 26
#define SSP_INTR 22
        //Set the gpio 23,24,25 as output
        //Set the gpio 26 as input

        pHC->pGPIORegs->GPDR0 |= ((0x1U << 23) | (0x1U << 24) | (0x1U << 25));
        pHC->pGPIORegs->GPDR0 &= ~(0x1U << 26);
        pHC->pGPIORegs->GAFR0_U |= ((0x2U << 14) |
                                   (0x2U << 16)  |
                                   (0x2U << 18)  |
                                   (0x1U << 20));
        pHC->pSSPRegs->base.sscr0 = 0;
        pHC->pSSPRegs->base.sscr1 = 0;
       
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 
ding !
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

8
 
关注,顶一下。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
我再顶!
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

10
 
高手们...
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

11
 
请问:
  我对GPIO  22~26进行如下初始化,是否正确
#define SSP_SCLK 23
#define SSP_SFRM 24
#define SSP_TX 25
#define SSP_RX 26
#define SSP_INTR 22
        //Set the gpio 23,24,25 as output
//Set the gpio 26 as input
pHC->pGPIORegs->GPDR0 |= ((0x1U < < 23) | (0x1U < < 24) | (0x1U < < 25));
pHC->pGPIORegs->GPDR0 &= ~(0x1U < < 26);
        pHC->pGPIORegs->GAFR0_U |= ((0x2U < < 14) |
                                  (0x2U < < 16)  |
                                  (0x2U < < 18)  |
                                  (0x1U < < 20));
pHC->pSSPRegs->base.sscr0 = 0;
pHC->pSSPRegs->base.sscr1 = 0;
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

12
 
ding!!!!!!!!!!!!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

13
 
以解决
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

14
 
恭喜

Paul, Chao @ Techware
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

15
 
ding ding ding ding
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表