《安富莱嵌入式周报》第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核心板设计的底板
大家看看有没有值得借鉴的
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可执行文件解析
这样内存变量解析,寄存器解析全部集齐