CYW43438 SDIO Response General Error Issue.

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
FuLu_4591171
Level 1
Level 1

I am debuging cyw43438 using SDIO, when downloading wlan firmware to cyw43438, I always met the error response form CMD53.

The response is 0x00002800, shows 'A general or an unknown errr ccurred during the operation' according to the SDIO Spec.

And the Data0 Line kept Low all the Time.

Does anyone know what caused this problem? And How to solve it.

Much Thx.

0 Likes
1 Solution

Hi GauravS_31,

     We have solved the problem. Because the 26M cannot work, and we changed another oscillator. Then we can download the wlan firmware to the WIFI module.

     But we met another porblem. When we want to read the data form cyw43438, we may meet the following problem:

     CYW43438 may lost the start bit. We find that @CYW43438 @doesn't send read data with correct start bit (4-bit '0' which lasts one cycle followed by read data).

     The overall signal is below:

1111.png

      The we find the start bit is a pulse:

222.png

     We cannot capture the start bit:

333.png    

View solution in original post

0 Likes
5 Replies
GauravS_31
Moderator
Moderator
Moderator
10 questions asked 250 solutions authored 250 sign-ins

Which host processor is being used here? Do you see the SDIO clock on the logic analyzer? If this is in WICED SDK, did you configure the WL_REG_ON pin which maps to WWD_PIN_POWER in platform.c? Did you configure the variables in platform_config.h based on the host processor for synchronization?

0 Likes

Sorry, I cannot find how to attach the file needed, so I paste the picture and cmd list here directly.

The following picture shows that CYW43438 reponse the host with GOOD CRC Status, but it keep busy after that. We check the DATA sent, but nothing wrong has been found.

Data busy and CRC Staus Good.png

The following picture shows that the host send correct CMD and the device response good.

Data busy CMD Response OK.png

The cmd we have sent is blow. At the last cmd, the CMD/Response and data is showed before, and after that the DAT0 keeps busy:

/**************************************************/

IPERF example

************************************************

Please select WiFi operation mode:

    a: Access point mode

    c: Client mode

Enter mode: c

Initializing WiFi connection...

cmd idx: 0, argu: 0x00000000

resp = 00000000

cmd idx: 5, argu: 0x00000000

CMD5 resp = 0x20ff8000

cmd idx: 3, argu: 0x00000000

cmd idx: 0, argu: 0x00000000

resp = 00000000

cmd idx: 5, argu: 0x00000000

CMD5 resp = 0x20ff8000

cmd idx: 3, argu: 0x00000000

cmd idx: 0, argu: 0x00000000

resp = 00000000

cmd idx: 5, argu: 0x00000000

resp = a0ffff00

cmd idx: 3, argu: 0x00000000

resp = 00010000

cmd idx: 7, argu: 0x00010000

resp = 0x00001e00

resp = 00001e00

cmd idx: 52, argu: 0x80000402

resp = 00001002

cmd idx: 52, argu: 0x00000400

resp = 00001002

cmd idx: 52, argu: 0x00000e00

resp = 00001040

cmd idx: 52, argu: 0x80000e42

resp = 00001042

cmd idx: 52, argu: 0x80002040

resp = 00001040

cmd idx: 52, argu: 0x00002000

resp = 00001040

cmd idx: 52, argu: 0x00001000

resp = 00001002

cmd idx: 52, argu: 0x80002040

resp = 00001040

cmd idx: 52, argu: 0x80022040

resp = 00001040

cmd idx: 52, argu: 0x80042040

resp = 00001040

cmd idx: 52, argu: 0x80042200

resp = 00001000

cmd idx: 52, argu: 0x80000807

resp = 00001007

cmd idx: 52, argu: 0x00002600

resp = 00001001

cmd idx: 52, argu: 0x80002603

resp = 00001003

AsyncInterrupt is not supported

cmd idx: 52, argu: 0x00000600

resp = 00001002

cmd idx: 52, argu: 0x92001c29

resp = 00001029

cmd idx: 52, argu: 0x12001c00

resp = 00001069

cmd idx: 52, argu: 0x92001c00

resp = 00001000

cmd idx: 52, argu: 0x92001e00

resp = 00001000

cmd idx: 52, argu: 0x80000406

resp = 00001006

cmd idx: 52, argu: 0x8001e407

resp = 00001007

cmd idx: 52, argu: 0x80000805

resp = 00001005

cmd idx: 52, argu: 0x00000600

resp = 00001002

cmd idx: 52, argu: 0x92001818

resp = 00001018

cmd idx: 52, argu: 0x92001610

resp = 00001010

cmd idx: 52, argu: 0x10700000

resp = 00001001

cmd idx: 52, argu: 0x92001600

resp = 00001000

cmd idx: 52, argu: 0x92001610

resp = 00001010

cmd idx: 52, argu: 0x10700000

resp = 00001001

cmd idx: 52, argu: 0x92001600

resp = 00001000

cmd idx: 52, argu: 0x92001610

resp = 00001010

cmd idx: 52, argu: 0x10900000

resp = 00001001

cmd idx: 52, argu: 0x92001600

resp = 00001000

cmd idx: 52, argu: 0x92001610

resp = 00001010

cmd idx: 52, argu: 0x10900000

resp = 00001001

cmd idx: 52, argu: 0x92001600

resp = 00001000

cmd idx: 52, argu: 0x92001610

resp = 00001010

cmd idx: 52, argu: 0x10900000

resp = 00001001

cmd idx: 52, argu: 0x92001600

resp = 00001000

cmd idx: 52, argu: 0x92001610

resp = 00001010

cmd idx: 52, argu: 0x10900000

resp = 00001001

cmd idx: 52, argu: 0x92001600

resp = 00001000

cmd idx: 52, argu: 0x92001610

resp = 00001010

cmd idx: 52, argu: 0x90881003

resp = 00001003

cmd idx: 52, argu: 0x92001600

resp = 00001000

cmd idx: 52, argu: 0x92001610

resp = 00001010

cmd idx: 52, argu: 0x10881000

resp = 00001003

cmd idx: 52, argu: 0x92001600

resp = 00001000

cmd idx: 52, argu: 0x92001610

resp = 00001010

cmd idx: 52, argu: 0x90900000

resp = 00001000

cmd idx: 52, argu: 0x92001600

resp = 00001000

cmd idx: 52, argu: 0x92001610

resp = 00001010

cmd idx: 52, argu: 0x90881001

resp = 00001001

cmd idx: 52, argu: 0x92001600

resp = 00001000

cmd idx: 52, argu: 0x92001610

resp = 00001010

cmd idx: 52, argu: 0x10881000

resp = 00001001

cmd idx: 52, argu: 0x92001600

resp = 00001000

cmd idx: 53, argu: 0x95802004

resp = 0x00001000

cmd idx: 53, argu: 0x95808804

resp = 0x00001000

cmd idx: 52, argu: 0x92001800

resp = 00001000

xfer cnt: 0x0 , addr = 0x00000000

cmd idx: 53, argu: 0x9c000010

resp = 0x00001000

xfer cnt: 0x400 , addr = 0x00000400

cmd idx: 53, argu: 0x9c080010

resp = 0x00001000

xfer cnt: 0x800 , addr = 0x00000800

cmd idx: 53, argu: 0x9c100010

resp = 0x00001000

xfer cnt: 0xc00 , addr = 0x00000c00

cmd idx: 53, argu: 0x9c180010

resp = 0x00001000

xfer cnt: 0x1000 , addr = 0x00001000

cmd idx: 53, argu: 0x9c200010

resp = 0x00001000

xfer cnt: 0x1400 , addr = 0x00001400

cmd idx: 53, argu: 0x9c280010

resp = 0x00001000

xfer cnt: 0x1800 , addr = 0x00001800

cmd idx: 53, argu: 0x9c300010

resp = 0x00001000

xfer cnt: 0x1c00 , addr = 0x00001c00

cmd idx: 53, argu: 0x9c380010

resp = 0x00001000

xfer cnt: 0x2000 , addr = 0x00002000

cmd idx: 53, argu: 0x9c400010

resp = 0x00001000

xfer cnt: 0x2400 , addr = 0x00002400

cmd idx: 53, argu: 0x9c480010

resp = 0x00001000

xfer cnt: 0x2800 , addr = 0x00002800

cmd idx: 53, argu: 0x9c500010

resp = 0x00001000

xfer cnt: 0x2c00 , addr = 0x00002c00

cmd idx: 53, argu: 0x9c580010

resp = 0x00001000

xfer cnt: 0x3000 , addr = 0x00003000

cmd idx: 53, argu: 0x9c600010

resp = 0x00001000

xfer cnt: 0x3400 , addr = 0x00003400

cmd idx: 53, argu: 0x9c680010

resp = 0x00001000

xfer cnt: 0x3800 , addr = 0x00003800

cmd idx: 53, argu: 0x9c700010

resp = 0x00001000

xfer cnt: 0x3c00 , addr = 0x00003c00

cmd idx: 53, argu: 0x9c780010

resp = 0x00001000

xfer cnt: 0x4000 , addr = 0x00004000

cmd idx: 53, argu: 0x9c800010

resp = 0x00001000

xfer cnt: 0x4400 , addr = 0x00004400

cmd idx: 53, argu: 0x9c880010

resp = 0x00001000

xfer cnt: 0x4800 , addr = 0x00004800

cmd idx: 53, argu: 0x9c900010

resp = 0x00001000

xfer cnt: 0x4c00 , addr = 0x00004c00

cmd idx: 53, argu: 0x9c980010

resp = 0x00001000

xfer cnt: 0x5000 , addr = 0x00005000

cmd idx: 53, argu: 0x9ca00010

resp = 0x00001000

xfer cnt: 0x5400 , addr = 0x00005400

cmd idx: 53, argu: 0x9ca80010

resp = 0x00001000

xfer cnt: 0x5800 , addr = 0x00005800

cmd idx: 53, argu: 0x9cb00010

resp = 0x00001000

xfer cnt: 0x5c00 , addr = 0x00005c00

cmd idx: 53, argu: 0x9cb80010

resp = 0x00001000

xfer cnt: 0x6000 , addr = 0x00006000

cmd idx: 53, argu: 0x9cc00010

resp = 0x00001000

xfer cnt: 0x6400 , addr = 0x00006400

cmd idx: 53, argu: 0x9cc80010

resp = 0x00001000

xfer cnt: 0x6800 , addr = 0x00006800

cmd idx: 53, argu: 0x9cd00010

resp = 0x00001000

xfer cnt: 0x6c00 , addr = 0x00006c00

cmd idx: 53, argu: 0x9cd80010

resp = 0x00001000

xfer cnt: 0x7000 , addr = 0x00007000

cmd idx: 53, argu: 0x9ce00010

resp = 0x00001000

xfer cnt: 0x7400 , addr = 0x00007400

cmd idx: 53, argu: 0x9ce80010

resp = 0x00001000

xfer cnt: 0x7800 , addr = 0x00007800

cmd idx: 53, argu: 0x9cf00010

resp = 0x00001000

xfer cnt: 0x7c00 , addr = 0x00007c00

cmd idx: 53, argu: 0x9cf80010

resp = 0x00001000

cmd idx: 52, argu: 0x92001480

resp = 00001080

xfer cnt: 0x8000 , addr = 0x00008000

cmd idx: 53, argu: 0x9c000010

resp = 0x00001000

xfer cnt: 0x8400 , addr = 0x00008400

cmd idx: 53, argu: 0x9c080010

resp = 0x00001000

xfer cnt: 0x8800 , addr = 0x00008800

cmd idx: 53, argu: 0x9c100010

resp = 0x00001000

xfer cnt: 0x8c00 , addr = 0x00008c00

cmd idx: 53, argu: 0x9c180010

resp = 0x00001000

xfer cnt: 0x9000 , addr = 0x00009000

cmd idx: 53, argu: 0x9c200010

resp = 0x00001000

xfer cnt: 0x9400 , addr = 0x00009400

cmd idx: 53, argu: 0x9c280010

resp = 0x00001000

xfer cnt: 0x9800 , addr = 0x00009800

cmd idx: 53, argu: 0x9c300010

resp = 0x00001000

xfer cnt: 0x9c00 , addr = 0x00009c00

cmd idx: 53, argu: 0x9c380010

resp = 0x00001000

0 Likes

Hi GauravS_31,

     We have solved the problem. Because the 26M cannot work, and we changed another oscillator. Then we can download the wlan firmware to the WIFI module.

     But we met another porblem. When we want to read the data form cyw43438, we may meet the following problem:

     CYW43438 may lost the start bit. We find that @CYW43438 @doesn't send read data with correct start bit (4-bit '0' which lasts one cycle followed by read data).

     The overall signal is below:

1111.png

      The we find the start bit is a pulse:

222.png

     We cannot capture the start bit:

333.png    

0 Likes

This appears to be a synchronization issue. Have you tried lowering the SDIO clock frequency to allow more time for the start bit to be sampled?

0 Likes
FuLu_4591171
Level 1
Level 1

Dear Sir,

     I use our own platform to communicate with CYW43438. The Module we use is Azurewave AW-NB197SM and it integrates the solutions of CYW43438_A1 SoC.

     We control the PIN of WL_REG_ON, first pull down WL_REG_ON and then pull up it.

     The problem is when we download the WLAN firmware, CYW43438 will stay busy on DAT0 at anywhere. We first analyze that the SDIO signal is somewhere wrong, so we slow down the SDIO Clock and check the signal using logic analyzer and oscilloscope, but nothing wrong has been founded.

     The analyzer signal and the SDIO cmd List that has been sent to CYW43438  have been attached. Please help us to debug the problem.

0 Likes