Using WICED 22.214.171.124, STM32L4+ connected to a 43012C0
I am running into an issue when sending data to a connected socket using the NETX API. After some time, anywhere from 2-20 minutes, my tcp sends return NX_NOT_CONNECTED. I've watched the connection in wireshark, and there is no FIN or RST being sent by either side of the connection. All traffic from the device stops, the server sends one keep alive, and finally the server RST the connection. When this happens, other wiced API calls, like getting the RSSI, hang indefinitely. I have tried closing the socket, and attempting to reconnect, but all attempts at connecting eventually return NX_NOT_CONNECTED. Even taking down the interface and attempting to rescan and connect to the AP fails on the scan call.
What I have noticed is that the WWD thread appears to be waiting on the SDIO semaphore, and never seems to unblock. Does anyone know what is happening, or if there is a work around for this which does not require restarting the chip from scratch?
Below is the stack trace for the WWD thread.
#0 __restore_interrupts (primask_value=2147483648) threadx/5_8/tx_port.h:488 #1 _tx_thread_system_return_inline () threadx/5_8/tx_port.h:488 #2 _tx_thread_system_ni_suspend (thread_ptr=<optimized out>, thread_ptr@entry=0x200019d4 <wwd_thread>, wait_option=<optimized out>) threadx/5_8/tx_thread_system_suspend.c:1278 #3 _tx_semaphore_get (semaphore_ptr=<optimized out>, wait_option=<optimized out>) threadx/5_8/tx_semaphore_get.c:239 #4 _txe_semaphore_get (semaphore_ptr=semaphore_ptr@entry=0x200025b4 <sdmmc1_sem>, wait_option=wait_option@entry=4294967295) threadx/5_8/txe_semaphore_get.c:179 #5 host_platform_sdio_cmd (command=command@entry=SDIO_CMD_53, argument=argument@entry=2751496256, response_expected=<optimized out>, response_expected@entry=(unknown: 164) host_platform_wiced.c:314 #6 host_platform_sdio_transfer (command=SDIO_CMD_53, response=0x0, response_expected=(unknown: 164) host_platform_wiced.c:531 #7 host_platform_sdio_transfer (direction=<optimized out>, command=<optimized out>, mode=<optimized out>, block_size=<optimized out>, argument=<optimized out>, data=<optimized out>, data_size=<optimized out>, response_expected=<optimized out>, response=<optimized out>) host_platform_wiced.c:463 #8 wwd_bus_sdio_cmd53 (response_expected=RESPONSE_NEEDED, response=0x0, data=0x200208f0 <g_tx_mem+64> "a", data_size=<optimized out>, address=0, mode=<optimized out>, function=<optimized out>, direction=<optimized out>) wiced-sdk/43xxx_Wi-Fi/WICED/WWD/internal/bus_protocols/SDIO/wwd_bus_protocol.c:708 #9 wwd_bus_sdio_transfer (direction=<optimized out>, function=<optimized out>, address=address@entry=0, data_size=<optimized out>, data=0x200208f0 <g_tx_mem+64> "a", response_expected=RESPONSE_NEEDED) wiced-sdk/43xxx_Wi-Fi/WICED/WWD/internal/bus_protocols/SDIO/ wwd_bus_protocol.c:663 #10 wwd_bus_transfer_bytes (direction=direction@entry=BUS_WRITE, function=function@entry=WLAN_FUNCTION, address=address@entry=0, size=size@entry=97, data=0x200208f0 <g_tx_mem+64>) wiced-sdk/43xxx_Wi-Fi/WICED/WWD/internal/bus_protocols/SDIO/ wwd_bus_protocol.c:644 #11 wwd_bus_send_buffer (buffer=0x200208b0 <g_tx_mem>) wiced-sdk/43xxx_Wi-Fi/WICED/WWD/internal/bus_protocols/SDIO/ wwd_bus_protocol.c:220 #12 wwd_thread_send_one_packet () wiced-sdk/43xxx_Wi-Fi/WICED/WWD/internal/wwd_thread.c:184 #13 wwd_thread_func (thread_input=<optimized out>) wiced-sdk/43xxx_Wi-Fi/WICED/WWD/internal/wwd_thread.c:357
I use PSoC 4200 BLE and RTC module with DTS correction and it only works correctly if the module is initialized in the same year.
When next year comes, the correction no longer works.
If I initialize the module at the end of the year, the correction will not work at all.
This is because the calculation of the Unix time value of the correction time occurs at the moment when it is applied, and it would be necessary to increment the value of the year so that the value of the Unix time corresponds to the next year.
static uint32 RTC_currentTickNumber = 0u;
RTC_currentTickNumber += RTC_updateTimePeriod;
if(RTC_currentTickNumber >= RTC_tickRefOneSec)
(uint32) RTC_currentTickNumber - RTC_tickRefOneSec;
#if(0u != RTC_INITIAL_DST_STATUS)
if(RTC_unixTime == RTC_unixTimeDstStart)
RTC_dstStatus = 1u;
RTC_dstTimeOffset = RTC_SECONDS_PER_HOUR;
if(RTC_unixTime == (RTC_unixTimeDstStop - RTC_dstTimeOffset))
RTC_dstStatus = 0u;
RTC_dstTimeOffset = 0u;
Here mast be an increase of year value in RTC_dstStartTime struct and RTC_dstStopTime struct
RTC_unixTimeDstStart = RTC_GetDstUnixTime(&RTC_dstStartTime);
RTC_unixTimeDstStop = RTC_GetDstUnixTime(&RTC_dstStopTime);
#endif /* (0u != RTC_INITIAL_DST_STATUS) */
#if(0u != RTC_INITIAL_ALARM_STATUS)
if((RTC_unixTime + RTC_dstTimeOffset) == RTC_unixTimeAlarm)
RTC_currentTimeDate.status |= (1uL << RTC_STATUS_ALARM_OFFSET);
RTC_alarmCurStatus = RTC_alarmCfgMask;
RTC_GetNexAlarmTime(RTC_unixTime + RTC_dstTimeOffset,
/* Call callback function only after new alarm time is obtained.
* Cypress ticket #264756
if (RTC_alarmCallbackPtr != NULL)
#endif/* (0u != RTC_INITIAL_ALARM_STATUS) */
I have bought S6SAE101A00SA1002 Solar-Powered IoT Device Kit and want to change the transmitting data time to save energy.
The default is 6 sec intervals. Would you please let me know how i can modify this value?
Thank you so much.Show Less
I am reaching out as I have been having some trouble while using the UDB document tool in the component creator. I am trying to get the count7 to output the terminal count to an external pin. However, I can only get one pule on a reset of the device (This means I probably have the connection to the pin correct). I have also tried to include a button input to Reset of the counter and have seen no change.
Cypress's has an example on youtube called "How to Create a Traffic Light Controller using UDBs with PSoC 5LP (Part 1)" but they don't go into detail of how to setup the count 7 component. But I followed what I saw the guy do in the UDB document.
I am looking for some direction on how to use the tool or any good documentation on the use of this tool. Or if this development tool meant to work the the PSoC 6s at all?
I have also attached a copy of the test component that I have created when using the CYBLE-416045-02 if anyone can try to replicate this issue.
When we made Port 1 Hi Z Analog, we can no longer program the PSoC3 with our host chip, but can still program with the MiniProg3. Our host chip uses active drive up/down when writing and driving XRES, and a pullup with receiving.
We found the problem - in PSoC Creator 4.3, when we set the pin to Hi Z Analog, it of course made the all of Port 1 Hi Z Analog. There was a side effect - in the Design Wide Resources > System section, it changed Programming\Debugging Debug Select to GPIO, which knocked out our ability to program from our host chip. We then changed it back to SWD, we could then program from our host chip.
On a side note, even while Programming\Debugging Debug Select was set to GPIO, the MiniProg3 could still program the chip - can you tell us how that can happen?
We have a few boards at remote locations with out MiniProgs, and we'd like to be able to recover those chips with the host processor only.Show Less
I have a question related to the proximity consumption. I noticed that the proximity consumption is similar to scan 12 buttons at 200 ms. Is it possible to find a spec somewhere describing proximity current?
My board with 1 button scan only, I measured ~40 uA.
Board with 12 buttons, no proximity enabled : ~110 uA.
Board with 12 buttons, proximity CS1 activated : ~105 uA.
So, I'd preferred to have consumption with around 40uA like one button. It's why I am confused about this... bad configuration?
can I supply the Murata 1LV module on VDDIO (Pin 35) with a 3V3 supply?
I need to interface with 3V3 CPU logic.
Thanks in advance for any feedback.
Cypress PSoC CY8C3246LTI-162 - date code (611327)
When Cypress goes into a Sleep mode for "good" boards the current draw drops to 50uA on boards with the above date code the board draws ~24mA on the "bad" units.
Do you know any changes that may have been made on the Cypress side recently?
These products haven't had a FW or HW ECO since 2016. The boards were assembled wk17 of 2021.Show Less
I have to develop a device that includes a 80x80mm touchpad area. I am not an expert in that domain and in Cypress environment. So I have 3 questions about this topic :
1- What is the most appropriate PSOC reference?
2- Are there libraries, or existing software to implement? I have tried to understand, with Psoc Designer, how the capsense is configured, without success.
3 - Are there reference pcb designs of the touchpads?
Thanks a lot for helpShow Less
I am relatively new to coding and I am trying to write a bus write and bus read function for my BNO055 Sensor. While debugging, I am getting these error codes for my I2CMasterSendStart and I2CMasterWriteByte functions but I don't understand what they mean. Could anyone guide me to understanding these errors and how I should fix them?Show Less