急!!求各位高手帮忙分析PXA270的SPI初始化!!!!

wangxin_801115 2009-08-18 03:52:51
请问哪位大哥写过PXA270的SPI驱动程序啊

我在初始化SPI中 SPI引脚用的:
GPIO23 SSPSCLK FOUT2
GPIO24 SSPSFRM 作为使能(低电平有效)
GPIO25 SSPTXD FOUT2
GPIO26 SSPRXD FIN1
先设置了SPI那4根GPIO的方向、功能
然后设置寄存器sscr0 、sscr1
g_pSSPRegs->sscr0 = 0x00000000;
g_pSSPRegs->sscr1 = 0x00000000;
g_pSSPRegs->sscr0 |= (XLLP_SSCR0_TIM | XLLP_SSCR0_RIM | XLLP_SSCR0_DSS_8BIT);
1<<23 1<<22 0x7
//g_pSSPRegs->sscr1 |= (XXLP_SSCR1_SPH);

g_pSSPRegs->sscr0 |= XLLP_SSCR0_SSE;
1<<7

最后选第一组SPI:
g_pCLKRegs->cken |= XLLP_CLKEN_SSP1; // XLLP_CLKEN_SSP1 (1<<23)

这样初始化之后为什么
我用示波器量SSPSCLK(GPIO23)没有任何波形
向TX(GPIO25)写入一字节,也没有波形
读出来的,通过打印信息看都是0XFF
打印信息如下:
SPI Write One Byte: 0x0
SPI Read2 One Byte: 0xff
SPI Write One Byte: 0xf0
SPI Read1 One Byte: 0xff
SPI Write One Byte: 0x0
SPI Read2 One Byte: 0xff
设置的寄存器相关打印信息如下:
g_pPIORegs->GPDR0: 0xc3e307e6 //1100 0011 1110 0011 0000 0111 1110 0110
g_pPIORegs->GAFR0_U: 0xa5188110 //1010 0101 0001 1000 10 00 00 01 00 01 00 00
g_pSSPRegs->sscr0: 0xc00087 //1100 0000 0000 0000 1000 0111
g_pSSPRegs->sscr1: 0x0 //0
g_pCLKRegs->cken: 0xc00ae4 //1100 0000 0000 1010 1110 0100
...全文
401 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
devilgavin 2011-06-24
  • 打赏
  • 举报
回复
我也遇到同样问题,能给我讲解下么?
zhangdi219 2010-04-13
  • 打赏
  • 举报
回复
不知道你的问题解决了没,我也遇到了同样的问题
tzljbj 2009-11-13
  • 打赏
  • 举报
回复
搞定了。。主要设置SSCR0,SSCR1。要把CLKEN打开。。有2种操作模式。CPU和DMA。
wangxin_801115 2009-11-02
  • 打赏
  • 举报
回复
CS配置成GPIO
tzljbj 2009-10-28
  • 打赏
  • 举报
回复
lz,24脚CS怎么拉低?寄存器设置的?我现在CS死活拉不下去,CLK也出不来。。。
wangxin_801115 2009-08-27
  • 打赏
  • 举报
回复
我再顶!
是涉及那几个寄存器!
但是我把很多BSP的初始化代码都试了
自己也查了相关的SPEC关于SPI的说明
没发现哪有错误啊
可是就是不出信号
现在的问题是:
我设置SSCR0,把时钟调到14K就会在写操作(即把数放到SSDR中)时会有波形,
但是如果设置成13M就不会有波形出现

另外,我在写函数中把24脚(CS)拉低,开始往SSDR中放数,然后检测状态寄存器SSSR的第四位
发现这位根本没有变化,说明写工作一直没进行,但是CLK却出来了

请问哪位高手真正做过PXA270的SPI驱动
帮忙解释一下这个现象啊!
谢谢啦!!!!
sherlock_lai 2009-08-26
  • 打赏
  • 举报
回复
楼上的兄弟。。。。SPI涉及到的不就那么几个寄存器么?
你多试试就出来了
wangxin_801115 2009-08-26
  • 打赏
  • 举报
回复
现在我把sscr0的SCR(19:8)位 |=0x37000
发现可以有时钟
但是TX脚还是量不到波形!
abo77281 2009-08-26
  • 打赏
  • 举报
回复
帮顶~~
wangxin_801115 2009-08-26
  • 打赏
  • 举报
回复
现在通过测量可以发现
每次写的时候才会有CLK波形,这样应该是对的
但是写数据(0xff)我量TX脚,一直是低

如果正常的情况应该是高才对吧?
wangxin_801115 2009-08-25
  • 打赏
  • 举报
回复
ding!
wangxin_801115 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 sherlock_lai 的回复:]
SPI还有钟极性和相位,你设置对了么?  仔细看看datasheet。
[/Quote]
请问您说的是PXA270吗?
我看了几个驱动都是这么配置的啊
您说的钟级性和相位是在哪设置的呢???
wangxin_801115 2009-08-24
  • 打赏
  • 举报
回复
用示波器量的
空闲状态原来是高
现在是低
请问楼上能留个QQ或者MSN吗??
谢谢啦
sherlock_lai 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wangxin_801115 的回复:]
我是使用了默认的配置,
我设置的是主模式
SPI的另外一端我还没接
我做了个线程一直执行写操作
量SPI的TX和CLK发现什么都没有
请问您说的是PXA270的吗?
因为不同的处理器对SPI有不同的配置方法
[/Quote]
如果CLK什么都没有肯定是不对的,你怎么量的? 用示波器? 有没有设置好触发?
你空闲状态CLK是高还是低?
wangxin_801115 2009-08-24
  • 打赏
  • 举报
回复
我是使用了默认的配置,
我设置的是主模式
SPI的另外一端我还没接
我做了个线程一直执行写操作
量SPI的TX和CLK发现什么都没有
请问您说的是PXA270的吗?
因为不同的处理器对SPI有不同的配置方法
sherlock_lai 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 wangxin_801115 的回复:]
引用 15 楼 sherlock_lai 的回复:
SPI还有钟极性和相位,你设置对了么?  仔细看看datasheet。

请问您说的是PXA270吗?
我看了几个驱动都是这么配置的啊
您说的钟级性和相位是在哪设置的呢???
[/Quote]
那你可能是使用的默认配置,但是和你通讯的另一方也要和你有相同的配置
关于时钟极性,你可以google SPI 时钟极性,介绍的文章很多的
wangxin_801115 2009-08-24
  • 打赏
  • 举报
回复
ding !
sherlock_lai 2009-08-23
  • 打赏
  • 举报
回复
SPI还有钟极性和相位,你设置对了么? 仔细看看datasheet。
wolong98 2009-08-23
  • 打赏
  • 举报
回复
顶,我以前pxa270的 spi 也没有调通, 配置寄存器和使能spi时钟, 死活发不出数据
最后只能改用 cpld 来操作spi~
jerry79 2009-08-21
  • 打赏
  • 举报
回复
学习,顶起
加载更多回复(12)

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧