I try to test WiFi functionality of CY43012 radio chip. To do it I use Cypress WHD Library.
Unfortunately my application fails at function whd_bus_sdio_download_firmware, because of "Timeout while waiting for high throughput clock". It is a moment after firmware upload, where program waits for CY43012 firmware to boot.
At that moment program waits for SDIO_CHIP_CLOCK_CSR (0x1000E) register for SDIO function 1 (BACKPLANE_FUNCTION) to change its state to SBSDIO_HT_AVAIL (0x80), but I get the SBSDIO_ALP_AVAIL (0x40).
Is there anything I should consider 1st trying to fix this issue? I am confident with the SDIO part of my program working correctly. Other than that program uses functions from WHD Library.
In the firmware upload part of init I upload firmware as array of uint8_t from 43012C0_bin.c. It is converted to uint32_t while sending, the conversion is as in the example below. Is this conversion correct?
[161, 138, 0, 0] = 138*256+161 = 35489
The firmware is transferred with SDIO by 1024 bytes at a time. The command 53 transfer it as 16 blocks of 64 bytes.
I checked the starting RAM address that I write CY43012 firmware to. In the library ATCM_RAM_BASE_ADDRESS for my chip is 0.
Can you share with us the NVRAM image file? If you don't want to share it in an open forum, let us know. Also, from your response I assume that firmware download is failing, right? Can you share the full terminal logs/prints with us?
I took a default nvram image from cypress wiced example that uses the same wireless module - Murata 1LV.
My console log is:
"Timeout while waiting for high throughput clock
SDIO firmware download error, whd_bus_sdio_init failed at 476"
Does it mean that the device is not booting at all, and it is not an issue with nvram?
I also implemented a function that is reading the firmware after upload and checks if all data is the same as in the image. This function passes so maybe there is an other configuration issue or the firmware image I use is not correct?
I use 43012C0_bin.c from: wifi-host-driver/43012C0_bin.c at master · cypresssemiconductorco/wifi-host-driver · GitHub
Is there any module configuration that I need to have done correctly to boot the HT clock? Any specific clocks or pins state?
Just to ensure, do you have an external LPO on your board? Also, it seems that you have a custom board in your setup. Can you provide more info on that?