WM-G-MR spi wifi 问题请教?
来源: 评论:0 点击:
各位老大好: 模组型号是USI的WM-G-MR-09,模组使用的芯片是Marvell 8686. 我自己在移植到freescale mx31上时候,读不出wifi模块的id,但是我使用FPGA去模拟SPI时序的时候是可以读取到ID的,chip id =0x0b, 当我使用arm连续的读写ID寄存器(0x0002)的时候,出现这样的波形,各位老大帮忙看一下,有什么问题吗?,
图中的黄线是ARM输出mosi,绿色是clk 蓝色是片选 ss0,
我的程序是这样的
int gspi_read_data_direct(gspi_card_rec_p cardp,
u8 *data, u16 reg, u16 size)
{
int ret;
gspihost_info_p gspiinfop;
ENTER();
if(!cardp) {
ret = -EINVAL;
goto error;
}
gspiinfop = cardp->ctrlr;
if((ret = gspi_acquire_io(gspiinfop)) != GSPI_OK){
GSPI_DEBUG("gspi_acquire_io failedn");
goto error;
}
GSPI_DEBUG("gspi_acquire_io okn");
gpio_set_low(WIFI_CS);
mcbsp_set_transmitter();
mcbsp_set_receiver();
///CPU model
{
int i;
GSPI_DEBUG("begin to readn");
///Process the data
{
u16 *dat = (u16 *) rx;//定义的临时数组
//u16 c;
wmb();
spi_write16(reg); //写寄存器地址
spi_read16(dat);
//udelay(10);
dat++;
for (i = 0; i < size; i++) {
spi2_write16(0); //dummy clk或者是激活读时钟
udelay(10);
spi2_read16(dat); // 读取数据
udelay(10);
dat++;
}
GSPI_DEBUG("end to read %xn",*dat);
}
rmb();
}
gspiinfop -> d.dma_rxack = 0;
mcbsp_reset_receiver();
mcbsp_reset_transmitter();
gpio_set_high(WIFI_CS);
memcpy(data,rx + (dummy_clk + 1) * 2, //把读到的前2个字节丢掉
(2*size - (dummy_clk + 1) * 2) );
gspi_release_io(gspiinfop);
ret = 0;
error: LEAVE();
return ret;
}
这个是读取寄存器的函数;各位老大有调试过的 指导一下 给点意见
图中的黄线是ARM输出mosi,绿色是clk 蓝色是片选 ss0,
我的程序是这样的
int gspi_read_data_direct(gspi_card_rec_p cardp,
u8 *data, u16 reg, u16 size)
{
int ret;
gspihost_info_p gspiinfop;
ENTER();
if(!cardp) {
ret = -EINVAL;
goto error;
}
gspiinfop = cardp->ctrlr;
if((ret = gspi_acquire_io(gspiinfop)) != GSPI_OK){
GSPI_DEBUG("gspi_acquire_io failedn");
goto error;
}
GSPI_DEBUG("gspi_acquire_io okn");
gpio_set_low(WIFI_CS);
mcbsp_set_transmitter();
mcbsp_set_receiver();
///CPU model
{
int i;
GSPI_DEBUG("begin to readn");
///Process the data
{
u16 *dat = (u16 *) rx;//定义的临时数组
//u16 c;
wmb();
spi_write16(reg); //写寄存器地址
spi_read16(dat);
//udelay(10);
dat++;
for (i = 0; i < size; i++) {
spi2_write16(0); //dummy clk或者是激活读时钟
udelay(10);
spi2_read16(dat); // 读取数据
udelay(10);
dat++;
}
GSPI_DEBUG("end to read %xn",*dat);
}
rmb();
}
gspiinfop -> d.dma_rxack = 0;
mcbsp_reset_receiver();
mcbsp_reset_transmitter();
gpio_set_high(WIFI_CS);
memcpy(data,rx + (dummy_clk + 1) * 2, //把读到的前2个字节丢掉
(2*size - (dummy_clk + 1) * 2) );
gspi_release_io(gspiinfop);
ret = 0;
error: LEAVE();
return ret;
}
这个是读取寄存器的函数;各位老大有调试过的 指导一下 给点意见
问题好具体啊,求人不如求己!
上一篇:现在做HID 蓝牙遥控器,哪家的蓝牙方案比较成熟?
下一篇:关于控制帧的疑惑
评论排行
- ·HFSS天线设计入门中文视频教程(1)
- ·CST2013破解文件,和谐万岁(1)
- ·关于打不开ADS帮助文档(1)
- ·基于左手介质的小型微带天线(1)
- ·HFSS10中仿真出现的错误(1)
- ·HFSS仿真螺旋天线模型的脚本程序(1)
- ·HFSS能仿真线圈天线吗?(1)
- ·Momentum中无法设置Substrate?(1)
- ·大家ADS2008中PIN二极管如何设定啊(1)
- ·请教ADS中的MSub个参数的意思(1)
- ·HFSS中怎么设置一个平面波激励啊(1)
- ·Hfss局部加密网格(1)
- ·HFSS使用心得(1)
- ·HFSS设计微带发夹型滤波器,求耦合系数请教(1)
- ·Microstrip Antenna Technology (Ke...(0)
- ·跟大家分享个宽频带90度功分移相网络(0)
- ·求教ADS中倍频器与频率源设置(0)
- ·30多个ADS视频教程在线观看(0)
- ·微波射频电路仿真100例(0)
- ·射频功率放大器设计资料(0)