5 Replies Latest reply on Dec 27, 2019 3:08 AM by GauravS_31

    CYW43438 SDIO Response General Error Issue.

    FuLu_4591171

      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.

        • 1. Re: CYW43438 SDIO Response General Error Issue.
          GauravS_31

          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?

          • 2. Re: CYW43438 SDIO Response General Error Issue.
            FuLu_4591171

            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.

            • 3. Re: CYW43438 SDIO Response General Error Issue.
              FuLu_4591171

              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

              • 4. Re: CYW43438 SDIO Response General Error Issue.
                FuLu_4591171

                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    

                 

                • 5. Re: CYW43438 SDIO Response General Error Issue.
                  GauravS_31

                  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?