Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av DanielM »

Då måste det vara denna mening.
Man får alltså IP paket av data. Men hur ser denna data ut då?
Skärmbild 2023-02-10 122902.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45176
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av TomasL »

Det är ett IP-paket. IP-paketet är noga dokumenterat i någon RFC bara att söka på nätet.
IP-paketet kan då innehålla till exempel ett UDP-paket, TCP-paket eller något annat, beroende på vad den andra sidan skickar.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av DanielM »

Okej.

Så denna WF200 behöver inte vara ansluten mot någon DHCP-server. Utan så fort WF200 får en signal, så suger den upp den och skickar vidare ut den via SPI?

Om det är så det fungerar, då behöver jag bara fokusera på elektrisk montering och läsa på om vad det är för typ av data-ram som meddelandet innehåller.
IP-meddelande.
Alltså detta:
https://en.wikipedia.org/wiki/Internet_ ... _structure

Så ett IP-meddelande innehåller:
Header = 480 bitar
Data = X antal bitar, beroende på vilket protokoll Header säger att det är.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45176
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av TomasL »

Antingen har du en statisk IP-adress som din driver sätter, eller så använder du en dynamisk IP via en DHCP server i det nätverket du skall ansluta till.
Du måste ju naturligtvis tala om vilket nätverks som den skall ansluta till samt även lösenordet för nätverket och hur det skall vara krypterat.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45176
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av TomasL »

DanielM skrev: 10 februari 2023, 12:44:14 Okej.

Så denna WF200 behöver inte vara ansluten mot någon DHCP-server. Utan så fort WF200 får en signal, så suger den upp den och skickar vidare ut den via SPI?

Om det är så det fungerar, då behöver jag bara fokusera på elektrisk montering och läsa på om vad det är för typ av data-ram som meddelandet innehåller.
IP-meddelande.
Alltså detta:
https://en.wikipedia.org/wiki/Internet_ ... _structure

Så ett IP-meddelande innehåller:
Header = 480 bitar
Data = X antal bitar, beroende på vilket protokoll Header säger att det är.
Man implementerar väl en helt vanlig TCP/IP stack som hanterar det.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av DanielM »

TomasL skrev: 10 februari 2023, 12:52:04
DanielM skrev: 10 februari 2023, 12:44:14 Okej.

Så denna WF200 behöver inte vara ansluten mot någon DHCP-server. Utan så fort WF200 får en signal, så suger den upp den och skickar vidare ut den via SPI?

Om det är så det fungerar, då behöver jag bara fokusera på elektrisk montering och läsa på om vad det är för typ av data-ram som meddelandet innehåller.
IP-meddelande.
Alltså detta:
https://en.wikipedia.org/wiki/Internet_ ... _structure

Så ett IP-meddelande innehåller:
Header = 480 bitar
Data = X antal bitar, beroende på vilket protokoll Header säger att det är.
Man implementerar väl en helt vanlig TCP/IP stack som hanterar det.
TomasL skrev: 10 februari 2023, 12:50:18 Antingen har du en statisk IP-adress som din driver sätter, eller så använder du en dynamisk IP via en DHCP server i det nätverket du skall ansluta till.
Du måste ju naturligtvis tala om vilket nätverks som den skall ansluta till samt även lösenordet för nätverket och hur det skall vara krypterat.
Så man kan säga att denna WF200 är lite mer som CAN-bus? Alltså den snappar upp alla meddelanden, oavsett, sedan är det mjukvara hos host som ska avgöra om detta meddelande är värt att lyssna på eller inte?

T.ex. om jag går in på 192.168.0.100/index.html. Då skickar min router ut ett IP-paket rakt ut i luften. När WF200 snappar upp detta IP-paket så skickar den vidare paketet ut till SPI-bussen. SPI-bussen är kopplad till en extern uC som läser in IP-paketet.

IP-paketet delas upp i olika delar, sedan kan t.ex. LwIP läsa in meddelandet och avgöra hur den ska göra?
Användarvisningsbild
rvl
Inlägg: 5721
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av rvl »

Header 480 bitar, var kom det ifrån?

> Snappar upp alla meddelanden.
Kanske? men naturligtvis i så fall sända på samma frekvens och med samma kryptering.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av DanielM »

Detta. Jag kan ha tolkat denna tabell fel.
Skärmbild 2023-02-10 130806.png
> Snappar upp alla meddelanden.
Kanske? men naturligtvis i så fall sända på samma frekvens och med samma kryptering.
Enligt databladet så skall en oscillator monteras till WF200.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45176
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av TomasL »

Headern kan vara upp till 448 bitar lång, men behöver inte vara det om det inte behövs. den kan dock aldrig vara kortare än 128 bitar.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av DanielM »

Exakt.
Så allt jag behöver göra är att läsa på om monteringen av chippet och få SPI-bussen att fungera.
Sedan är det bara läsa på hur jag kan få LwIP att kunna tolka detta IP-paket.

Det är väll den vägen jag ska gå?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45176
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av TomasL »

T.ex. om jag går in på 192.168.0.100/index.html. Då skickar min router ut ett IP-paket rakt ut i luften. När WF200 snappar upp detta IP-paket så skickar den vidare paketet ut till SPI-bussen. SPI-bussen är kopplad till en extern uC som läser in IP-paketet.
Nej din Router eller AP skickar inte ut ett IP-paket utan ett WLAN-paket
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45176
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av TomasL »

DanielM skrev: 10 februari 2023, 13:17:54 Exakt.
Så allt jag behöver göra är att läsa på om monteringen av chippet och få SPI-bussen att fungera.
Sedan är det bara läsa på hur jag kan få LwIP att kunna tolka detta IP-paket.

Det är väll den vägen jag ska gå?
Nja, du behöver en SPI-driver, en MAC-driver och sedan en TCP/IP-stack.
Möjligt att LwIP innehåller MAC-drivern också.
Användarvisningsbild
ajje
Inlägg: 2351
Blev medlem: 12 mars 2010, 16:35:31
Ort: Smedjebacken

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av ajje »

Har vi inte haft den här diskussionen tidigare där DanielM inte förstått de olika lagren i OSI-modellen? :D
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av DanielM »

TomasL skrev: 10 februari 2023, 13:21:40
DanielM skrev: 10 februari 2023, 13:17:54 Exakt.
Så allt jag behöver göra är att läsa på om monteringen av chippet och få SPI-bussen att fungera.
Sedan är det bara läsa på hur jag kan få LwIP att kunna tolka detta IP-paket.

Det är väll den vägen jag ska gå?
Nja, du behöver en SPI-driver, en MAC-driver och sedan en TCP/IP-stack.
Möjligt att LwIP innehåller MAC-drivern också.
Är det så mycket man behöver för att tolka detta IP-meddelande?
Är det inte meningen att LwIP ska tolka meddelandet och sedan skicka en respons tillbaka?

När du menar SPI-driver, menar du SPI-buss då?
Är MAC-drivern en mjukvara?

Edit:

Okej. Nu börjar bitarna falla på plats.
MAC-driver är alltså en mjukvara som talar med SPI-bussen.
https://github.com/SiliconLabs/wfx-fullMAC-driver

IP-stacken är t.ex. LwIP.

Edit 2:

Nyfiken fråga.
Visst är är det så att i denna fil så ska jag skriva hårdvarunära kod? Notera att .c filen måste jag skriva själv, med samma deklarerade namn.
https://github.com/SiliconLabs/wfx-full ... host_api.h

Samt denna kod ska LwIP tala med? Notera att det finns en färdig .c fil.
https://github.com/SiliconLabs/wfx-full ... r/sl_wfx.h
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Silicon Labs WF200/Microchip ATWINC1500 - Värt att testa?

Inlägg av DanielM »

Innan jag påbörjar arbetet så vill jag bara kolla med er om följande.

Den där MAC-drivern, som kräver att man ska skapa eget hårdvarulager.
Tittar vi här så verkar det som att WF200 skickar en signal via SPI
Skärmbild 2023-02-10 130806.png
Skärmbild 2023-02-11 175420.png
Tittar man på MAC-driven så är det bara denna fil som man behöver göra en .c fil till
Skärmbild 2023-02-11 180449.png
Exempel på kod från .h filen

Kod: Markera allt

/**************************************************************************//**
 * @brief Hold the WFx chip in reset mode
 * @returns Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
 *
 * @note The reset pin is asserted by the host to keep the WFx chip in reset
 *****************************************************************************/
sl_status_t sl_wfx_host_hold_in_reset(void);

/**************************************************************************//**
 * @brief Set up the next event that the driver will wait
 *
 * @param event_id is the ID to be waited
 * @returns Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
 *
 * @note Called every time a API command is called
 *****************************************************************************/
sl_status_t sl_wfx_host_setup_waited_event(uint8_t event_id);

/**************************************************************************//**
 * @brief Called when the driver is waiting for a confirmation
 *
 * @param confirmation_id is the ID to be waited
 * @param timeout_ms is the time before the command times out
 * @param event_payload_out is a pointer to the data returned by the
 * confirmation
 * @returns Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
 *
 * @note Called every time a API command is called
 *****************************************************************************/
sl_status_t sl_wfx_host_wait_for_confirmation(uint8_t confirmation_id,
                                              uint32_t timeout_ms,
                                              void **event_payload_out);
Det finns en annan fil som används för att styra denna MAC-driver. Det är sl_wfx.h
Exempel på kod.

Kod: Markera allt

sl_status_t sl_wfx_set_tx_rate_parameters(sl_wfx_rate_set_bitmask_t rate_set_bitmask,
                                          uint8_t use_minstrel,
                                          sl_wfx_interface_t interface);

sl_status_t sl_wfx_set_max_tx_power(int32_t max_tx_power, sl_wfx_interface_t interface);

sl_status_t sl_wfx_get_max_tx_power(int32_t *max_tx_power_rf_port_1,
                                    int32_t *max_tx_power_rf_port_2,
                                    sl_wfx_interface_t interface);

sl_status_t sl_wfx_get_pmk(sl_wfx_password_t *password,
                           uint32_t *password_length,
                           sl_wfx_interface_t interface);

sl_status_t sl_wfx_get_ap_client_signal_strength(const sl_wfx_mac_address_t *client, uint32_t *signal_strength);

sl_status_t sl_wfx_ext_auth(sl_wfx_ext_auth_data_type_t auth_data_type,
                            uint16_t auth_data_length,
                            const uint8_t *auth_data);

sl_status_t sl_wfx_set_probe_request_filter(const uint8_t *ie_data_mask,
                                            const uint8_t *ie_data,
                                            uint16_t ie_data_length);

sl_status_t sl_wfx_get_statistics(sl_wfx_statistics_t *stats);

/*
 * Asynchronous WF200 commands
 */
sl_status_t sl_wfx_send_join_command(const uint8_t *ssid,
                                     uint32_t ssid_length,
                                     const sl_wfx_mac_address_t *bssid,
                                     uint16_t channel,
                                     sl_wfx_security_mode_t security_mode,
                                     uint8_t prevent_roaming,
                                     uint16_t management_frame_protection,
                                     const uint8_t *passkey,
                                     uint16_t passkey_length,
                                     const uint8_t *ie_data,
                                     uint16_t ie_data_length);

sl_status_t sl_wfx_send_disconnect_command(void);
Frågeställning:
Visst är det så att jag ska skriva en .c fil som använder samma funktionsnamn i filen sl_wfx_host_api.h.
Denna .c fil skall använda sig av SPI-bussen. Hur vet jag då vad jag ska skriva?

För detta så verkar det logiskt. Det handlar bara om en digital pinne som kopplas ihop med WUP.

Kod: Markera allt

/**************************************************************************//**
 * @brief Drive the wake up pin in the requested state
 *
 * @param state to be applied to the wake up pin
 * @returns Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
 *
 * @note Called if the sleep mode is enabled
 *****************************************************************************/
sl_status_t sl_wfx_host_set_wake_up_pin(uint8_t state);
Skärmbild 2023-02-11 181359.png
Men när det kommer till detta, så har jag ingen aning alls vad jag ska skriva här.

Kod: Markera allt

/**************************************************************************//**
 * @brief Driver hook to get the number of lines of the PDS
 *
 * @param pds_size is a pointer to the PDS size value
 * @returns Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
 *
 * @note Called once during the driver initialization phase
 *****************************************************************************/
sl_status_t sl_wfx_host_get_pds_size(uint16_t *pds_size);
Eller i vilken ordning jag ska skicka dessa data över SPI bussen.

Kod: Markera allt

/**************************************************************************//**
 * @brief Send data on the SPI bus
 *
 * @param type is the type of bus action (see ::sl_wfx_host_bus_transfer_type_t)
 * @param header is a pointer to the header data
 * @param header_length is the length of the header data
 * @param buffer is a pointer to the buffer data
 * @param buffer_length is the length of the buffer data
 * @returns Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
 *****************************************************************************/
sl_status_t sl_wfx_host_spi_transfer_no_cs_assert(sl_wfx_host_bus_transfer_type_t type,
                                                  uint8_t *header,
                                                  uint16_t header_length,
                                                  uint8_t *buffer,
                                                  uint16_t buffer_length);
Jag vet inte heller vem, när, och vart jag ska anropa dessa funktioner i sl_wfx.h filen. Ska LwIP styra den?

Kod: Markera allt

sl_status_t sl_wfx_receive_frame(uint16_t *ctrl_reg);

sl_status_t sl_wfx_send_configuration(const char *pds_data, uint32_t pds_data_length);

sl_status_t sl_wfx_control_gpio(uint8_t gpio_label, uint8_t gpio_mode, uint32_t *value);

sl_status_t sl_wfx_pta_settings(uint8_t pta_mode,
                                uint8_t request_signal_active_level,
                                uint8_t priority_signal_active_level,
                                uint8_t freq_signal_active_level,
                                uint8_t grant_signal_active_level,
                                uint8_t coex_type,
                                uint8_t default_grant_state,
                                uint8_t simultaneous_rx_access,
                                uint8_t priority_sampling_time,
                                uint8_t tx_rx_sampling_time,
                                uint8_t freq_sampling_time,
                                uint8_t grant_valid_time,
                                uint8_t fem_control_time,
                                uint8_t first_slot_time,
                                uint16_t periodic_tx_rx_sampling_time,
                                uint16_t coex_quota,
                                uint16_t wlan_quota);
Hur skulle ni ha gjort? Använda sig av FreeRTOS?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Skriv svar