周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz!
BSP视频教程第28期:CANopen协议栈专题,CANopen主从机组网实战,CAN词典工具使用方法以及吃透PDO玩法
BSP视频教程第28期:CANopen协议栈专题,CANopen主从机组网实战,CAN词典工具使用方法以及吃透PDO玩法(2023-11-01) - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz!
https://www.bilibili.com/video/BV1H84y1Q717/
《安富莱嵌入式周报》第326期:航空航天级CANopen协议栈,开源USB PD电源和功耗分析,开源EtherCAT伺服驱动板,时序绘制软件,现代机器人设计
CANopen · GitLab
CANopen
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基础上开发的。
GitHub - tooyipjee/Spark-Analyzer: USB-PD ESP32 Power Analyzer
Spark-Analyzer-master.zip (21.9 MB)
Spark Analyzer 与 USB-PD完全兼容, 精确控制电压电平, 可切换至 5V、9V、15V 和 20V. 精确测量项目的电流消耗
负载性能测试:
9V3A负载测试:
20V1.5A负载测试:
手机APP
板子效果:
(1)英飞凌推出WiFi6,蓝牙5.4二合一芯片 CYW55513
CYW5551 - Infineon Technologies
之前树莓派单片机上用是这个系列的CYW43439,这次推出升级版
(2)乐鑫支持 Matter 1.2 标准和新家电设备类型
乐鑫率先支持 Matter 1.2 标准和新家电设备类型 | 乐鑫科技
Matter 是开源的连接标准,旨在简化并增强智能设备与应用程序的开发。它为全球智能家居设备制定了统一规范,从而确保各种产品之间能够进行安全、可靠、无缝的通信,同时具有良好的互操作性。最新发布的 Matter 1.2 规范增加了对九种新设备类型的支持,包括:
洗衣机
冰箱
洗碗机
房间空调
扫地机器人
空气质量传感器
空气净化器
烟雾和一氧化碳警报器
风扇
(3)ARM收购部分树莓派股权
(4)ADI公司的Module(微型模块)稳压器和DC-DC电源产品是完整的系统级封装 (SiP)电源管理解决方案
在紧凑的表面贴装LGA封装中集成了DC-DC控制器、功率晶体管、输入和输出电容、补偿组件以及电感。Module 电源产品支持降压、降压-升压、电池充电器、隔离式转换器和LED驱动器等功能。Module电源产品是高度集成的解决方案,每个器件都可提供PCB Gerber文件,在满足时间和空间限制的同时,具有高效率、高可靠性。一些产品还提供符合EN 55022 B类标准的低EMI解决方案。
umodulepowerproducts_cn.pdf (32.69MB)
(5)Arduino为其H7核心板设计的底板
Tip your hat hello to our latest expansion: Introducing the Portenta Hat Carrier! | Arduino Blog
大家看看有没有值得借鉴的
ASX00049-schematics.pdf (11.4 MB)
(6)CMSIS软件包V6.0持续迭代,为正式版发布做准备,支持的列表已经不再包含AC5
Releases · ARM-software/CMSIS_6 · GitHub
(7)瑞萨Cortex-M85内核单片机RA8系列正式上线发布
RA8M1 - 基于 480 MHz Arm® Cortex®-M85、搭载 Helium 和 TrustZone® 的微控制器 | Renesas
WaveDrom - Digital timing diagram everywhere
Releases · wavedrom/wavedrom.github.io · GitHub
采用json方式编辑,输出SVG矢量格式图片:
大量效果展示:
WaveDrom / Aliaksei Chapyzhenka | Observable
https://github.com/astrosander/arduino-speedometer
这个方案比较容易实现,这里给大家分享,主要是作者做了一个动图,比较拉风
arduino-speedometer-main.zip (17.13 MB)
https://github.com/madibabaiasl/modern-robotics-I-course/wiki
课程内容安排的比较好,大家有兴趣可以看看
每期内容图文并茂
大部分EtherCAT协议用于伺服都是采用的CANopen over EtherCAT CiA402
GitHub - kubabuda/ecat_servo: Open EtherCAT CiA402 servo drive implementation
EtherCAT servodrive | Hackaday.io
ecat_servo-main.zip (41.21MB)
从站芯片使用的AX58100或者LAN9252
全家桶软件包下载:
内核微更:
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文件
开始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可执行文件解析
这样内存变量解析,寄存器解析全部集齐