关于小笨蛋四轴程序问题
我自己仿照小笨蛋wifi四轴做了一个四轴,wifi模块用的是88w8686。程序输出的结果为:\ | /
- RT - Thread Operating System
/ | \ 1.1.0 build Jul 25 2015
2006 - 2012 Copyright by rt-thread team
FW download Phase1 failed
调试过程中一直卡在
循环中 do {
for(i=0;i<1000;i++);
gspi_read_reg(SCRATCH_1_REG, &len);
} while (!len);
以下是完整函数
int sbi_download_wlan_fw_image( const u8 * firmware,int firmwarelen)
{
int ret,i;
u16 len;
u32 cnt = 0;
do {
for(i=0;i<1000;i++);
gspi_read_reg(SCRATCH_1_REG, &len);
} while (!len);
for (;;) {
if (wait_for_hostintstatus(RT_NULL)) {
WlanDebug(WlanErr,"FW download Phase2 failed\n");
return WLAN_STATUS_FAILURE;
}
gspi_read_reg(SCRATCH_1_REG, &len);
if (!len) {
break;
}
if (len & 1) {
WlanDebug(WlanMsg,"CRC Error\n");
len &= ~1;
} else {
WlanDebug(WlanMsg,".");
}
gspi_write_data_direct((u8 *) (firmware + cnt), CMD_RDWRPORT_REG,
(len / 2) + 1);
gspi_write_reg(HOST_INT_STATUS_REG, 0x0000);
gspi_write_reg(CARD_INT_CAUSE_REG, CIC_CmdDnLdOvr);
cnt += len;
}
ret = WLAN_STATUS_SUCCESS;
return ret;
}
wifi源码如下 没人来吗 是不是一直读不到数据,所以就卡在那了? 读到的值,为0
int gspi_read_reg(u16 reg, u16 * val)
{
u32 reg_val = 0;
WifiSpiReadReg(reg, ®_val);
*val = (u16)reg_val;
return 0;
}
void WifiSpiReadReg(u16 reg, u32* pval)
{
u16 temp_l = 0;
u32 temp_h = 0;
SPI_ClrCS(WIFI_SPI);
SPI_WriteByte(WIFI_SPI, reg);
// if_gspi_ops->Delay_nUS(1);
temp_l = SPI_ReadByte(WIFI_SPI, WIFI_DUMMY_DATA); //读低位
temp_h = SPI_ReadByte(WIFI_SPI, WIFI_DUMMY_DATA); //读高位
temp_h <<= 16;
temp_h |= temp_l;
SPI_SetCS(WIFI_SPI);
*pval = temp_h;
//rt_kprintf("\nSpiReadReg:0X%8X\n\n",temp_h);
}
lans0625 发表于 2015-7-25 10:59
是不是一直读不到数据,所以就卡在那了?
读到的值,为0
int gspi_read_reg(u16 reg, u16 * val)
{
u32 reg_val = 0;
WifiSpiReadReg(reg, ®_val);
*val = (u16)reg_val;
return 0;
}
void WifiSpiReadReg(u16 reg, u32* pval)
{
u16 temp_l = 0;
u32 temp_h = 0;
SPI_ClrCS(WIFI_SPI);
SPI_WriteByte(WIFI_SPI, reg);
// if_gspi_ops->Delay_nUS(1);
temp_l = SPI_ReadByte(WIFI_SPI, WIFI_DUMMY_DATA); //读低位
temp_h = SPI_ReadByte(WIFI_SPI, WIFI_DUMMY_DATA); //读高位
temp_h <<= 16;
temp_h |= temp_l;
SPI_SetCS(WIFI_SPI);
*pval = temp_h;
//rt_kprintf("\nSpiReadReg:0X%8X\n\n",temp_h);
}
读到的temp_h为0 我看到错误了,真是悲剧。for循环后面有一个分号,。。。。
已经崩溃了,被这个wifi模块 坑死了
页:
[1]