搜索
bottom↓
回复: 1

关于wince spi驱动的一个小问题

[复制链接]

出0入0汤圆

发表于 2011-3-25 08:15:06 | 显示全部楼层 |阅读模式
我在写一个wince的spi驱动来读取ad的数值,
使用查询方式读取2440 spi总线上的数据
void write_spi(unsigned char txdata)
{
  // Check the status of Transfer Ready flag(READY=1) ,and then write data to SPTDAT0
  v_pSPIPregs->SPTDAT0 = txdata; // Write Potentiometer value
  RETAILMSG(TRUE, (TEXT("INFO:write_spi data (%ld).\r\n"), v_pSPIPregs->SPTDAT0));   
  RETAILMSG(TRUE, (TEXT("INFO:before while loop v_pSPIPregs->SPSTA0 is (%ld).\r\n"), v_pSPIPregs->SPSTA0));   

  // Wait to complete write data
  while(!(v_pSPIPregs->SPSTA0 & 0x01== 0x01 )); //SPSTA0的READY是否置位
  RETAILMSG(1,(TEXT("write_spi delay is over\n")));
}
每次调试到上述代码中的while(!(v_pSPIPregs->SPSTA0 & 0x01== 0x01 )); 时,cpu就不停地执行该循环,不再继续执行。

我开始怀疑是2440的时钟有问题 我写了
RETAILMSG(TRUE, (TEXT("INFO:before write data v_pSPIPregs->SPSTA0 is (%ld).\r\n"), v_pSPIPregs->SPSTA0));   
v_pSPIPregs->SPTDAT0 = txdata;   
RETAILMSG(TRUE, (TEXT("INFO:write_spi data (%ld).\r\n"), v_pSPIPregs->SPTDAT0));   
RETAILMSG(TRUE, (TEXT("INFO:after write data v_pSPIPregs->SPSTA0 is (%ld).\r\n"), v_pSPIPregs->SPSTA0));   

结果写入数据的前后 打印显示该标志位一直为0 也就是繁忙 所以后面的while循环当中 该标志位一直为繁忙 所以不停地打印语句 也就是说 往里面的写入的数据都没有发送出去 有可能是时钟的问题 可是我设置了时钟使能
s2440SPIPWR->CLKCON |= SPI_POWER_ON;// SPI clock enable
时钟频率为:
  // Baudrate = PCLK/2/(Prescaler value + 1)
  // PCLK = 400M/6 = 66.7MHz
  // Prescaler value = 0x22= 34
  // Baudrate = 66.7MHz/2/(34 + 1) = 0.95MHz
   
  v_pSPIPregs->SPPRE0 = 0x22;
这究竟是什么导致了该标志位一直为繁忙状态呢。。。是不是没有时钟 导致写入的数据都无法发送出去呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-3-25 12:10:11 | 显示全部楼层
问题已解决 是SPI的寄存器往内存映射时候出问题了
VirtulaCopy的最后一个参数应该添加PAGE_PHYSICAL
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 17:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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