《安富萊嵌入式週報》第326期:航空航天級CANopen協議棧,開源USB PD電源和功耗分析,開源EtherCAT伺服驅動板,時序繪製軟件,現代機器人設計

週報彙總地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104

 

更新一期視頻教程:

BSP視頻教程第28期:CANopen協議棧專題,CANopen主從機組網實戰,CAN詞典工具使用方法以及喫透PDO玩法
https://www.armbbs.cn/forum.php?mod=viewthread&tid=121619


視頻版:

https://www.bilibili.com/video/BV1H84y1Q717/

 



1、航空航天級CANopen協議棧

https://gitlab.com/n7space/canopen
https://canopen.space/#download

  lely-core-ecss.zip (1.41 MB)
  test-environment-master.zip (494.18 KB)
  test-suite-master.zip (815.63 KB)

由於高質量,安全可靠組件需求,ECSS((European Cooperation for Space Standardization,歐洲空間標準化合作組織)創建了一個適用用於航天器的CANopen版本( ECSS-E-ST-50-15C)

測試在航天級M7內核芯片ATSAMV71-XULT上的SAMV7上執行。ECCS B級預認證 CANopen 庫,用太空環境。

當前提供的兩個測試版

當前是在開源免費CANopen協議棧lely基礎上開發的。


2、開源USB PD電源和功耗分析Spark Analyzer

https://github.com/tooyipjee/Spark-Analyzer/tree/master

  Spark-Analyzer-master.zip (21.9 MB)

Spark Analyzer 與 USB-PD完全兼容,  精確控制電壓電平,  可切換至 5V、9V、15V 和 20V.  精確測量項目的電流消耗

負載性能測試:

9V3A負載測試:

20V1.5A負載測試:

手機APP

板子效果:


3、資訊

(1)英飛凌推出WiFi6,藍牙5.4二合一芯片 CYW55513

https://www.infineon.com/cms/en/product/promopages/CYW5551x/?redirId=269261

之前樹莓派單片機上用是這個系列的CYW43439,這次推出升級版

 

(2)樂鑫支持 Matter 1.2 標準和新家電設備類型

https://www.espressif.com/zh-hans/news/Matter_1.2_Support

Matter 是開源的連接標準,旨在簡化並增強智能設備與應用程序的開發。它爲全球智能家居設備制定了統一規範,從而確保各種產品之間能夠進行安全、可靠、無縫的通信,同時具有良好的互操作性。最新發布的 Matter 1.2 規範增加了對九種新設備類型的支持,包括:

洗衣機
冰箱
洗碗機
房間空調
掃地機器人
空氣質量傳感器
空氣淨化器
煙霧和一氧化碳警報器
風扇

(3)ARM收購部分樹莓派股權

https://newsroom.arm.com/news/raspberry-pi-investment

 

(4)ADI公司的Module(微型模塊)穩壓器和DC-DC電源產品是完整的系統級封裝 (SiP)電源管理解決方案

https://www.analog.com/cn/product-category/umodule-regulators.html

在緊湊的表面貼裝LGA封裝中集成了DC-DC控制器、功率晶體管、輸入和輸出電容、補償組件以及電感。Module 電源產品支持降壓、降壓-升壓、電池充電器、隔離式轉換器和LED驅動器等功能。Module電源產品是高度集成的解決方案,每個器件都可提供PCB Gerber文件,在滿足時間和空間限制的同時,具有高效率、高可靠性。一些產品還提供符合EN 55022 B類標準的低EMI解決方案。

umodulepowerproducts_cn.pdf (32.69MB)

 

(5)Arduino爲其H7核心板設計的底板

https://blog.arduino.cc/2023/10/25/tip-your-hat-hello-to-our-latest-expansion-introducing-portenta-hat-carrier/

大家看看有沒有值得借鑑的

  ASX00049-schematics.pdf (11.4 MB)

 

(6)CMSIS軟件包V6.0持續迭代,爲正式版發佈做準備,支持的列表已經不再包含AC5

https://github.com/ARM-software/CMSIS_6/releases

 

(7)瑞薩Cortex-M85內核單片機RA8系列正式上線發佈

https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra8m1-480-mhz-arm-cortex-m85-based-microcontroller-helium-and-trustzone


4、開源跨平臺波形時序繪製軟件wavedrom,可以在線使用,也可以離線使用

https://wavedrom.com/
https://github.com/wavedrom/wavedrom.github.io/releases

採用json方式編輯,輸出SVG矢量格式圖片:

大量效果展示:

https://observablehq.com/collection/@drom/wavedrom


5、基於霍爾傳感器的自行車測速

https://github.com/astrosander/arduino-speedometer

這個方案比較容易實現,這裏給大家分享,主要是作者做了一個動圖,比較拉風

 arduino-speedometer-main.zip (17.13 MB)


6、現代機器人設計課程

https://github.com/madibabaiasl/modern-robotics-I-course/wiki

課程內容安排的比較好,大家有興趣可以看看

每期內容圖文並茂


7、開源EtherCAT伺服驅動板設計

大部分EtherCAT協議用於伺服都是採用的CANopen over EtherCAT CiA402

https://github.com/kubabuda/ecat_servo
https://hackaday.io/project/181058-ethercat-servodrive

ecat_servo-main.zip (41.21MB)

從站芯片使用的AX58100或者LAN9252


8、ThreadX全家桶迎來年末最後一個大更版本6.3.0

全家桶軟件包下載:

https://www.armbbs.cn/forum.php?mod=viewthread&tid=97925

內核微更:

ThreadX NetXDUO升級至V6.3.0,增加實時傳輸RTP,RTCP和RTSP支持

 

Files are added to support new protocols: Real Time Transport Protocol (RTP), RTP Control Protocol (RTCP), and Real Time Streaming Protocol (RTSP)
      addons/rtp/nx_rtp_sender.c
      addons/rtp/nx_rtp_sender.h
      addons/rtsp/nx_rtsp_server.c
      addons/rtsp/nx_rtsp_server.h
  
  Files are modified to improve the internal logic for finding a free port:
      common/src/nx_tcp_free_port_find.c
      common/src/nx_udp_free_port_find.c
  
  Files are modified to improve packet length or buffer length verification:
      common/inc/nx_icmpv6.h
      common/src/nx_icmpv6_packet_process.c
      common/src/nx_icmpv6_process_na.c
      common/src/nx_icmpv6_process_ns.c
      common/src/nx_icmpv6_process_packet_too_big.c
      common/src/nx_icmpv6_process_redirect.c
      common/src/nx_icmpv6_process_ra.c
  
  Files are modified to support random IP id:
      common/inc/nx_api.h
      common/inc/nx_user_sample.h
      common/src/nx_ip_create.c
      common/src/nx_ip_header_add.c
      common/src/nx_ipv6_fragment_process.c
  
  Files are modified to fix typo in the comments:
      crypto_libraries/src/nx_crypto_3des.c
      crypto_libraries/src/nx_crypto_aes.c
      crypto_libraries/src/nx_crypto_des.c
      crypto_libraries/src/nx_crypto_drbg.c
      crypto_libraries/src/nx_crypto_ecdh.c
      crypto_libraries/src/nx_crypto_ecdsa.c
      crypto_libraries/src/nx_crypto_ecjpake.c
      crypto_libraries/src/nx_crypto_hkdf.c
      crypto_libraries/src/nx_crypto_hmac.c
      crypto_libraries/src/nx_crypto_hmac_md5.c
      crypto_libraries/src/nx_crypto_hmac_sha1.c
      crypto_libraries/src/nx_crypto_hmac_sha2.c
      crypto_libraries/src/nx_crypto_hmac_sha5.c
      crypto_libraries/src/nx_crypto_md5.c
      crypto_libraries/src/nx_crypto_pkcs1_v1.5.c
      crypto_libraries/src/nx_crypto_rsa.c
      crypto_libraries/src/nx_crypto_sha1.c
      crypto_libraries/src/nx_crypto_sha2.c
      crypto_libraries/src/nx_crypto_sha5.c
      crypto_libraries/src/nx_crypto_tls_prf_1.c
      crypto_libraries/src/nx_crypto_tls_prf_sha256.c
      crypto_libraries/src/nx_crypto_tls_prf_sha384.c
      crypto_libraries/src/nx_crypto_tls_prf_sha512.c
  
  File is modified to fix packet buffer overrun:
      nx_secure/src/nx_secure_tls_send_certificate.c
  
  File is modified to check length before sending:
      nx_secure/src/nxe_secure_tls_session_send.c
  
  File is modified to fix the logic of handling close notify packet from peer:
      nx_secure/src/nx_secure_dtls_session_end.c
  
  Files are modified to avoid duplicate packet release when DTLS send fails:
      nx_secure/src/nx_secure_dtls_send_record.c
      nx_secure/src/nx_secure_dtls_server_handshake.c
      nx_secure/src/nx_secure_dtls_session_receive.c
  
  Files are modified for Azure IoT:
      nx_azure_iot*                                      Corrected the include order for IoT security module.
                                                         Added error state in notification callback to let user application have the chance to retry new update for Azure Device Update.
                                                         Reported the result of each step for Azure Device Update.
                                                         Improved the code to ignore null file url for Azure Device Update.
                                                         Added the PnP check for Azure Device Update.
                                                         Added sha256 in driver preprocess command for Azure Device Update.
                                                         Fixed multiple proxy update issue for Azure Device Update.
                                                         Added support for skipping failed step/update for Azure Device Update.
                                                         Corrected the packet allocation for MQTT over WebSocket.
  Other modified files:
      common/src/nx_ipv4_packet_receive.c                Validated packet length for fragments. Make sure length of packet with more bit flag is multiple of 8.
      common/src/nx_igmp_packet_process.c                Unified checksum calculation by function call.
      common/src/nx_tcp_packet_process.c                 Validated TCP header buffer to avoid span in multiple packets.
      common/src/nx_tcp_socket_state_data_check.c        Corrected the acked packet count.
  
      addons/bsd/nxd_bsd.h                               Added options to disable OS BSD APIs overriding.
      addons/bsd/nxd_bsd.c                               Support random IP id.
                                                         Used new APIs/structs naming.
  
      addons/dhcp/nxd_dhcp_client.c                      Support random IP id.
                                                         Corrected caller checking for the function _nxe_dhcp_state_change_notify.
      addons/dhcp/nxd_dhcp_server.c                      Fixed local variable type issue for the function _nx_dhcp_server_extract_information under strict aliasing compiling option.
                                                         Corrected the logic of verifying the incoming packet length.
      addons/dhcp/nxd_dhcpv6_server.c                    Fixed server not update client record issue when continuous CONFIRM message received.
                                                         Corrected server for ignoring both preferred-lifetime and valid-lifetime in client request message(s).
  
      addons/dns/nxd_dns.c                               Reset the receive status for mismatch ID to avoid processing and releasing null packet.
  
      addons/ftp/nxd_ftp_client.c                        Corrected the length of packet buffer to avoid write overflow.
                                                         Fixed packet double release issue in _nx_ftp_client_file_write.
      addons/ftp/nxd_ftp_server.c                        Set packet pointer to NULL after released to fix duplicate packet release issue.
                                                         Avoided duplicate creation for data socket when previous command is not finished.
                                                         Fixed data length underflow when TCP MSS is less than 255.
                                                         Removed deletion of control socket in stop API which is only needed in delete API.
  
      addons/mdns/nxd_mdns.h                             Corrected mDNS symbols check for NX_MDNS_ENABLE_IPV6.
  
      addons/mqtt/nxd_mqtt_client.c                      Improved internal logic for MQTT packet allocation.
  
      addons/nat/nx_nat.c                                Fixed packet double release issue in _nx_nat_process_packet.
  
      addons/ppp/nx_ppp.c                                Supported processing compressed data.
      addons/ppp/nx_ppp.h                                Supported processing compressed data.
  
      addons/smtp/nxd_smtp_client.c                      Set nx_smtp_server_packet to NULL to avoided duplicate packet release in _nx_smtp_utility_read_server_code.
  
      addons/snmp/nxd_snmp_.c                            Combined the functions of processing snmp v1 and v2.
                                                         Improved packet length or buffer length verification.
                                                         Fixed packet double release issue.
      addons/snmp/nxd_snmp_.h                            Combined the functions of processing snmp v1 and v2.
  
      addons/sntp/nxd_sntp_client.c                      Dropped packet chain for SNTP data to avoid write overflow.

 

ThreadX USBX升級至V6.3.0, 大量支持zero copy和性能提升

 

Improved host UVC format and frame data checking, files modified:
    ux_host_class_video.h
    ux_host_class_video_format_data_get.c
    ux_host_class_video_frame_data_get.c
    ux_host_class_video_frame_parameters_set.c
  
Fixed use after free issues, files modified:
    ux_host_class_hub_entry.c
    ux_hcd_ehci_isochronous_endpoint_create.c
  
Improved device enumeration transfer flow in standalone mode, file modified:
    ux_host_stack_tasks_run.c
  
Turned off in standalone build, file modified:
    ux_host_class_asix_activate.c
  
Improved host hub deactivating flow, file modified:
    ux_host_class_hub_deactivate.c
  
Added error traps, file modified:
    ux_utility_memory_free.c
  
Improved host HID clients deactivation sequence, files modified:
    ux_host_class_hid_keyboard_deactivate.c
    ux_host_class_hid_mouse_deactivate.c
    ux_host_class_hid_remote_control_deactivate.c
  
Improved standalone host CDC ACM control/data group management, files modified:
    ux_host_class_cdc_acm_activate.c
    ux_host_class_cdc_acm_deactivate.c
    ux_host_class_cdc_acm_entry.c
  
Removed unused semaphore in host PIMA, file modified:
    ux_host_class_pima_deactivate.c
  
Improved PIMA host/device optional interrupt endpoint management, files modified:
    ux_device_class_pima_activate.c
    ux_device_class_pima_deactivate.c
    ux_device_class_pima_event_set.c
    ux_device_class_pima_interrupt_thread.c
    ux_host_class_pima_deactivate.c
  
Removed interface link in device linked classes, modified files:
    ux_host_class_asix_configure.c
    ux_host_class_gser_activate.c
    ux_host_class_gser_configure.c
    ux_host_class_prolific_configure.c
    ux_host_class_swar_configure.c
  
Moved host storage class/subclass/protocol checking and endpoints getting into _activate, files modified:
    ux_host_class_storage_activate.c
    ux_host_class_storage_device_initialize.c
  
Improved host class endpoints get/checking, files modified:
    ux_host_class_cdc_acm_endpoints_get.c
    ux_host_class_cdc_ecm_endpoints_get.c
    ux_host_class_storage_endpoints_get.c
  
Improved host audio descriptors check, AC AS management and error handling, files modified:
    ux_host_class_audio.h
    ux_host_class_audio_activate.c
    ux_host_class_audio_deactivate.c
    ux_host_class_audio_device_type_get.c
  
Checked XML tag nesting depth in Pictbridge object parsing, file modified:
    ux_pictbridge_object_parse.c
  
Limited output array size for pictbridge element to hexa convert, file modified:
    ux_pictbridge_array_element_to_array_hexa.c
  
Rejected CDC-DATA interface not next to its control interface:
    ux_host_class_cdc_ecm_activate.c
  
Fixed host HID field managing issue, file modified:
    ux_host_class_hid_report_add.c
  
Improved host HID usage handling, files modified:
    ux_host_class_hid_field_decompress.c
    ux_host_class_hid_report_add.c
  
Fixed some EHCI split transfer issues, files modified:
    ux_hcd_ehci_interrupt_endpoint_create.c
    ux_hcd_ehci_isochronous_endpoint_create.c
  
Checked received ethernet packet length before processing it, file modified:
    ux_network_driver.c
  
Refined memory management to reduce overhead, files modified:
    ux_api.h
    ux_user_sample.h
    ux_utility.h
  
    ux_system_initialize.c
    ux_utility_memory_allocate.c
    ux_utility_memory_byte_pool_create.c
    ux_utility_memory_byte_pool_search.c
    ux_utility_memory_free_block_best_get.c
    ux_utility_memory_free.c
    ux_hcd_sim_host_initialize.c
    ux_hcd_sim_host_uninitialize.c
  
Added zero copy option to device RNDIS, files modified:
    ux_user_sample.h
    ux_device_class_rndis.h
    ux_device_class_rndis_activate.c
    ux_device_class_rndis_bulkin_thread.c
    ux_device_class_rndis_bulkout_thread.c
  
Added zero copy option to device CDC_ECM, files modified:
    ux_user_sample.h
    ux_device_class_cdc_ecm.h
    ux_device_class_cdc_ecm_activate.c
    ux_device_class_cdc_ecm_bulkin_thread.c
    ux_device_class_cdc_ecm_bulkout_thread.c
    ux_device_class_cdc_ecm_change.c
  
Enabled zero copy when device class video (UVC) owns endpoint buffer, files modified:
    ux_device_class_video.h
    ux_device_class_video_change.c
    ux_device_class_video_initialize.c
    ux_device_class_video_read_task_function.c
    ux_device_class_video_read_thread_entry.c
    ux_device_class_video_uninitialize.c
    ux_device_class_video_write_task_function.c
    ux_device_class_video_write_thread_entry.c
  
Enabled zero copy when device class audio (UAC) owns endpoint buffer, files modified:
    ux_device_class_audio.h
    ux_device_class_audio_activate.c
    ux_device_class_audio_change.c
    ux_device_class_audio_initialize.c
    ux_device_class_audio_interrupt_task_function.c
    ux_device_class_audio_read_task_function.c
    ux_device_class_audio_read_thread_entry.c
    ux_device_class_audio_unitialize.c
    ux_device_class_audio_write_task_function.c
    ux_device_class_audio_write_thread_entry.c
  
Added device class HID zero copy and flexible queue support, files modified:
    ux_user_sample.h
    ux_device_class_hid.h
    ux_device_class_hid_activate.c
    ux_device_class_hid_event_get.c
    ux_device_class_hid_event_set.c
    ux_device_class_hid_initialize.c
    ux_device_class_hid_interrupt_thread.c
    ux_device_class_hid_read.c
    ux_device_class_hid_read_run.c
    ux_device_class_hid_receiver_event_free.c
    ux_device_class_hid_receiver_event_get.c
    ux_device_class_hid_receiver_initialize.c
    ux_device_class_hid_receiver_tasks_run.c
    ux_device_class_hid_receiver_thread.c
    ux_device_class_hid_receiver_uninitialize.c
    ux_device_class_hid_tasks_run.c
    ux_device_class_hid_uninitialize.c
  
Added device class CDC ACM zero copy support, files modified:
    ux_user_sample.h
    ux_device_class_cdc_acm.h
    ux_device_class_cdc_acm_bulkin_thread.c
    ux_device_class_cdc_acm_initialize.c
    ux_device_class_cdc_acm_read.c
    ux_device_class_cdc_acm_read_run.c
    ux_device_class_cdc_acm_tasks_run.c
    ux_device_class_cdc_acm_unitialize.c
    ux_device_class_cdc_acm_write.c
    ux_device_class_cdc_acm_write_run.c
    ux_device_class_cdc_acm_bulkout_thread.c
  
Improved interface request process with print class GET_DEVICE_ID support, file modified:
    ux_device_stack_control_request_process.c
  
Added new device mode to manage endpoint buffers in classes, files modified:
    ux_api.h
    ux_user_sample.h
  
    ux_device_class_dpump.h
    ux_device_class_dpump_activate.c
    ux_device_class_dpump_change.c
    ux_device_class_dpump_initialize.c
    ux_device_class_dpump_read.c
    ux_device_class_dpump_read_run.c
    ux_device_class_dpump_write.c
    ux_device_class_dpump_write_run.c
  
    ux_device_stack_initialize.c
    ux_device_stack_uninitialize.c
  
    ux_device_class_audio.h
    ux_device_class_audio_activate.c
    ux_device_class_audio_change.c
    ux_device_class_audio_initialize.c
    ux_device_class_audio_unitialize.c
  
    ux_device_class_ccid.h
    ux_device_class_ccid_activate.c
    ux_device_class_ccid_initialize.c
    ux_device_class_ccid_uninitialize.c
  
    ux_device_class_cdc_acm.h
    ux_device_class_cdc_acm_bulkin_thread.c
    ux_device_class_cdc_acm_bulkout_thread.c
    ux_device_class_cdc_acm_initialize.c
    ux_device_class_cdc_acm_read.c
    ux_device_class_cdc_acm_read_run.c
    ux_device_class_cdc_acm_tasks_run.c
    ux_device_class_cdc_acm_unitialize.c
    ux_device_class_cdc_acm_write.c
    ux_device_class_cdc_acm_write_run.c
  
    ux_device_class_cdc_ecm.h
    ux_device_class_cdc_ecm_activate.c
    ux_device_class_cdc_ecm_bulkin_thread.c
    ux_device_class_cdc_ecm_bulkout_thread.c
    ux_device_class_cdc_ecm_change.c
    ux_device_class_cdc_ecm_initialize.c
    ux_device_class_cdc_ecm_uninitialize.c
  
    ux_device_class_hid.h
    ux_device_class_hid_activate.c
    ux_device_class_hid_initialize.c
    ux_device_class_hid_uninitialize.c
  
    ux_device_class_pima.h
    ux_device_class_pima_activate.c
    ux_device_class_pima_initialize.c
    ux_device_class_pima_object_info_get.c
    ux_device_class_pima_object_prop_desc_get.c
    ux_device_class_pima_object_prop_value_get.c
    ux_device_class_pima_object_references_get.c
  
    ux_device_class_printer.h
    ux_device_class_printer_activate.c
    ux_device_class_printer_initialize.c
    ux_device_class_printer_uninitialize.c
    ux_device_class_printer_write.c
    ux_device_class_printer_write_run.c
  
    ux_device_class_rndis.h
    ux_device_class_rndis_activate.c
    ux_device_class_rndis_bulkin_thread.c
    ux_device_class_rndis_bulkout_thread.c
    ux_device_class_rndis_initialize.c
  
    ux_device_class_storage.h
    ux_device_class_storage_activate.c
    ux_device_class_storage_initialize.c
    ux_device_class_storage_thread.c
    ux_device_class_storage_uninitialize.c
  
    ux_device_class_video.h
    ux_device_class_video_change.c

 

ThreadX GUIX升級至V6.3.0,增加畫布局部緩存支持,增加Cortex-M85的Helium支持

ThreadX FileX和LevelX升級至V6.3.0,加強NAND和NOR支持

GUIX Studio升級至V6.3.0版本,支持單獨生成字庫和圖庫bin文件


9、H7-TOOL本週進展

H7-TOOL詳細介紹:https://www.armbbs.cn/forum.php?mod=viewthread&tid=89934

開始H7-TOOL的2.24版本固件收尾工作,這次更新的內容很多,除了新增一批脫機燒錄支持芯片。

這次將帶來I2C從機,SPI從機,CANopen解析(已經在論壇發佈),RTOS Trace鏈表解析,CMSIS-SVD文件解析實時監測各種外設等功能

(1)H7-TOOL的CANopen解析功能增加分包展示心跳,緊急報文,PDO和SDO消息

主從組網測試,節點多了之後,很多消息混雜在一起。今天增加個分窗口展示功能,彙總窗口展示所有消息,其它窗口分別展示心跳,緊急報文,PDO和SDO。

比如下面這種,很多都在一起展示,不好分辯

通過這些窗口做分辯後,會大大方便查看:

同時增加5Mbps通信速度:


(2)H7-TOOL增加CMSIS-SVD解析功能,實時監測所有芯片廠家所有外設寄存器和每個bit

下個2.24版本固件正式發佈。

(1)支持離線,WiFi,以太網和USB四種玩法,且支持內網和外網遠程訪問。芯片所有寄存器狀態全部掌控。

(2)不會復位目標板芯片,隨時連接隨時使用。

(3)MDK, IAR等在線調試有兩個重要功能,一個是斷點,單步調試等玩法。還有一個就是外設寄存器狀態,內存數據等實時檢測。我們本次要實現的是後者,當前TOOL就可以讀寫外設寄存器,但是需要看IC數據手冊來獲取外設地址,非常不方便。
    針對這個問題,IC廠家都有推出CMSIS-SVD文件,這個文件包含了所有外設寄存器地址,甚至每個寄存器每個bit的含義。所以TOOL能夠解析這個文件,意義重大。

初步上位機解析效果:

之前版本已經發布了elf,axf,out可執行文件解析

這樣內存變量解析,寄存器解析全部集齊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章