SPI通信88w8686下载firmware出错。

InsaneCode 2010-07-16 04:14:42
各位高手:
小弟最近调试88w8686 wifi。现在firmware的下载可以成功,不过下载之后的函数is_ firmware这个函数出错了,这个函数是去读一个寄存器,这个寄存器到底是做什么的在datasheet上面没有说明。不过估计是下载firmware函数的时候其实下载是不正确的。SPI通信读写寄存器都没有问题。网上有人说是飞线过于复杂造成数据有些数据丢失造成的。虽然现在板子上面确实飞线过长,不过我现在没办法改变这个现实。
问题:
除了飞线问题之外,大家谁调试过这个模块的SPI模式的。大概还有可能是什么原因造成这个这种现象的呢?
大家谁有88w8686的寄存器说明,发给我一个,万分感谢。Email:kacyquan@gmail.com。
...全文
416 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yang55555ang 2011-11-28
  • 打赏
  • 举报
回复
SPI UART SDIO 的 wifi模组,连上8位MCU可收发数据,开发简单,协议齐全.提供技术支持。QQ931521083
InsaneCode 2010-08-03
  • 打赏
  • 举报
回复
发现这个还没结贴呢~现在结贴吧。
InsaneCode 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 linux_lee 的回复:]
C/C++ code
static int sbi_download_wlan_fw_image(const u8 *firmware, int firmwarelen)
{
int ret,j, index = 0;
u16 dlimage[1024];
u16 len;
u32 cnt=0;
DWORD d……
[/Quote]

thank you very much。请问一下ShortDelays()这个函数是延迟多少的?
Linux_lee 2010-07-21
  • 打赏
  • 举报
回复
static int sbi_download_wlan_fw_image(const u8 *firmware, int firmwarelen)
{
int ret,j, index = 0;
u16 dlimage[1024];
u16 len;
u32 cnt=0;
DWORD dwTick1,dwTick2;
int tmp=0;
/* Wait initially for the first non-zero value */

do
{
//NKDbgPrintfW(TEXT ("spi_ReadRegister(SCRATCH_1_REG, &len);\n"));
tmp++;
NdisStallExecution(10); // stall for 10 us
spi_ReadRegister(SCRATCH_1_REG, &len);
// NKDbgPrintfW(TEXT ("SCRATCH_1_REG)len = %x\n"),len);
} while(!len);


dwTick1 = GetTickCount();
// NKDbgPrintfW(TEXT ("(dwTick1 = %x\n",dwT));

for(;;) {
///memset(dlimage, 0, SPI_FW_DOWNLOAD_PKTCNT);
memset(dlimage, 0, sizeof(dlimage));

if(!wait_for_hostintstatus()) {
NKDbgPrintfW(TEXT ("Firmware download died ......\n"));
return -1;
}

spi_ReadRegister(SCRATCH_1_REG, &len);
ShortDelays(100);
// NKDbgPrintfW(TEXT ("len = %d\n"),len);
cnt += len;

if(!len) {
NKDbgPrintfW(TEXT ("\nFirmware download complete \n"));
break;
}

if(len & 1) {
//NKDbgPrintfW(TEXT ("CRC Error\n"));
len &= ~1;
} else {
////NKDbgPrintfW(TEXT ("."));
}

for(j=0;j<(len/2);++j) {
dlimage[j] = firmware[index++];
dlimage[j] |= (firmware[index++] << 8);
}

// NKDbgPrintfW(TEXT ("before download, Tick: %d\n"), GetTickCount());
//gspi_write_data_direct(dlimage, CMD_RDWRPORT_REG, len);

gspi_write_data_direct(dlimage, CMD_RDWRPORT_REG, len);
//NKDbgPrintfW(TEXT ("After download, Tick: %d\r\n"), GetTickCount());
ShortDelays(100);
spi_WriteRegister(HOST_INT_STATUS_REG, 0x0000);
ShortDelays(100);
spi_WriteRegister(CARD_INT_CAUSE_REG, CIC_CmdDnLdOvr);
ShortDelays(100);
}

NKDbgPrintfW(TEXT ("Firmware Image of Size %d bytes downloaded, cnt %d\n"), firmwarelen, cnt);
dwTick2 = GetTickCount();
// NKDbgPrintfW(TEXT ("Downloading performance : Tick1 =%d,Tick2=%d,Diff=%d,Total = %d bits/sec\r\n"), dwTick1,dwTick2,dwTick2-dwTick1,(firmwarelen*1000*8)/(dwTick2-dwTick1));
// NKDbgPrintfW(TEXT("Firmware Image of Size %d bytes downloaded, cnt %d\r\n!!"),firmwarelen,cnt);

ret = 0;

return ret;
}
InsaneCode 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 linux_lee 的回复:]

引用 4 楼 kacyquan 的回复:

引用 1 楼 linux_lee 的回复:

上个月刚好也调试了这个模块,这个问题不是飞线的问题,需要在下载firmware的函数里面插入延时,使其下载正确,就可以了。is_ firmware这个函数是进行数据的校检


哦?真的可以吗?我试试看~!请问你是怎么加的延迟函数,是在读写的函数里面,还是在,download fw里面加的啊。我……
[/Quote]

谢谢哦,我试了一下,还是不行,现在非常郁闷啊 。
InsaneCode 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 linux_lee 的回复:]

上个月刚好也调试了这个模块,这个问题不是飞线的问题,需要在下载firmware的函数里面插入延时,使其下载正确,就可以了。is_ firmware这个函数是进行数据的校检
[/Quote]

哦?真的可以吗?我试试看~!请问你是怎么加的延迟函数,是在读写的函数里面,还是在,download fw里面加的啊。我没有使用DMA的模式。
Linux_lee 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kacyquan 的回复:]

引用 1 楼 linux_lee 的回复:

上个月刚好也调试了这个模块,这个问题不是飞线的问题,需要在下载firmware的函数里面插入延时,使其下载正确,就可以了。is_ firmware这个函数是进行数据的校检


哦?真的可以吗?我试试看~!请问你是怎么加的延迟函数,是在读写的函数里面,还是在,download fw里面加的啊。我没有使用DMA的模式。
[/Quote]

我这也没有使用DMA模式,在spi_download_wlan_fw_image里面的for循环内加延时,具体延时参数可以自己调试确定。下载正确后会有打印信息提示的
gooogleman 2010-07-17
  • 打赏
  • 举报
回复
哈哈哈,我的SDIO wifi搜索不到信号,纠结ing。
IT铁哥 2010-07-17
  • 打赏
  • 举报
回复
是不是时钟速度太快了。
Linux_lee 2010-07-16
  • 打赏
  • 举报
回复
上个月刚好也调试了这个模块,这个问题不是飞线的问题,需要在下载firmware的函数里面插入延时,使其下载正确,就可以了。is_ firmware这个函数是进行数据的校检

19,504

社区成员

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

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