最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

《安富莱嵌入式周报》第315期:开源USB高速分析仪,8GHz示波器开发, 600行C编写RISC-V内核,英特尔推出用于开发人员等宽字体,便携物联网监测器_环球动态

来源:博客园

周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104

视频版:

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


(资料图片仅供参考)

1、开源USB2.0高速分析仪

https://github.com/ataradov/usb-sniffer

usb-sniffer-main.zip(2.05 MB)

分析仪上位机直接采用的Wireshark。

硬件采用Cypress CY7C68013A MCU + Lattice LCMXO2 FPGA + Microchip USB3343 USB PHY实现

2、8GHz示波器开发

https://hackaday.io/project/167292-8-ghz-sampling-oscilloscope

这是一个未完成作品,不过作者分享的一些设计问题,有兴趣可以看看

做了很多测试:

硬件也做了很多:

3、创意设计,RGB 全彩荧光管

这里是采用的LCD显示屏实现的效果,视频实际展示效果很棒

视频:

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

截图:

4、超低功耗无线振动传感器监控电机参考设计,实现预防性维护,CR2032纽扣电池可供电10年

https://www.ti.com/tool/TIDA-01469

本地计算2048点 FFT振动频谱,蓝牙无线,传输距离72米,平均待机电流879.5nA

框图:

5、小知识:为什么我们看到的各种SD卡移植在底层接口都没有做擦除操作

本质原因是SD卡有擦写均衡机制,每次主机写入数据时到相同的逻辑地址,实际上数据会被写入一个新分配的空物理地址。如果人为的对相同地址擦除再写入,实际上是破环了这个机制。

闪迪的规格书:

04db416b291011446889dbd6129e2644.pdf (405.78 KB)

6、软硬件开源便携监测器CatSniffer升级至V3.1,支持Zigbee,蓝牙,LoRa,Thread,Sub 1GHz,6lowpan

https://github.com/ElectronicCats/CatSniffer

规格和效果:

兼容各种Sniffer监测组件,

比如TI的

7、软件资讯

(1)IAR9.40发布

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

(2)Silicon Labs的Gecko SDK升级至V4.3,加强各种物联网协议支持

https://community.silabs.com/s/s ... t-v43-now-available

(3)Autodesk宣布计划于2026年停止支持EAGLE PCB

https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Autodesk-EAGLE-Announcement-Next-steps-and-FAQ.html

(4)英飞凌全家桶开发环境ModusToolbox升级至V3.1

https://community.infineon.com/t5/ModusToolbox-General/Release-Announcement-ModusToolbox-3-1-available-for-download/td-p/447143

(5)上海先楫半导体获TUV莱茵国内首张ISO26262 和IEC61508 功能安全管理体系双认证

8、硬件资讯:

(1)Silicon Labs发布面向物联网的单片机AI芯片FG28 SoC,支持蓝牙/sub-GHz双频,实现远距离广覆盖Wi-SUN及专有协议连接

https://www.silabs.com/wireless/ ... b-ghz-wireless-socs

业界首款集成AI/ML硬件加速器的sub-Ghz SoC,业界领先的Secure Vaul安全技术。

FG28为用户提供了一种在网络上配置和部署新设备的简便方法,而且sub-Ghz频段的设计旨在支持超过一英里的设备间通信。

(2)新版I3C HCI V1.2规范

mipi-I3C-HCI-specification-v1-2p.pdf(4.15 MB)

(3)扬声器性能测量笔记

AppNote-Loudspeaker-EA-Measurements.pdf(1.47 MB)

9、纯硬件打造的上古游戏机雅达利https://www.atariage.com/2600/archives/schematics/index.htmlhttps://docs.dev-docs.org/htm/search.php?find=_s

10、600行C编写RISC-V内核

https://github.com/mnurzia/rv

用这个代码来学习RISC-V内核非常不错

rv-main.zip(13.29 KB)支持的指令:

代码如下:

#include #include  #include "rv.h" rv_res load_cb(void *user, rv_u32 addr, rv_u8 *data) {  if (addr - 0x80000000 > 0x10000) /* Reset vector is 0x80000000 */    return RV_BAD;  *data = ((rv_u8 *)(user))[addr - 0x80000000];  return RV_OK;} rv_res store_cb(void *user, rv_u32 addr, rv_u8 data) {  if (addr - 0x80000000 > 0x10000)    return RV_BAD;  ((rv_u8 *)(user))[addr - 0x80000000] = data;  return RV_OK;} rv_u32 program[2] = {    /* _start: */    0x02A88893, /* add a7, a7, 42 */    0x00000073  /* ecall */}; int main(void) {  rv_u8 mem[0x10000];  rv cpu;  rv_init(&cpu, (void *)mem, &load_cb, &store_cb);  memcpy((void *)mem, (void *)program, sizeof(program));  while (rv_step(&cpu) != RV_EECALL) {  }  printf("Environment call @ %08X: %u\n", cpu.pc, cpu.r[17]);  return 0;}

11、英特尔推出一款等宽免费字体One Mono,提高可读性,解决开发人员眼疲劳,方便纠错

https://github.com/intel/intel-one-mono

这是一个富有表现力的等宽字体家族,在构建时充分考虑了清晰度、易读性和开发人员的需求。

最大程度地提高可读性,以解决开发人员的眼睛疲劳,并减少编辑错误

ttf.zip(276.95 KB)

12、Makefile基础入门文档

当前只有英文版,搞个中文版就更好了

https://makefiletutorial.com/#makefile-cookbook

13、好帖,图文并茂介绍C的动态内存分配的malloc和free实现

https://samwho.dev/memory-allocation/

14、H7-TOOL本周进展

H7-TOOL详细介绍:https://www.armbbs.cn/forum.php?mod=viewthread&tid=89934

开始着手H7-TOOL新版固件2.22收尾工作,本次升级更新的内容非常多,同时感谢大家反馈的问题,大部分得到修复

这周在实现uCOS-II的Trace功能上花了不少时间,uCOS-II不像已经发布的uCOS-III Trace,uCOS-II获取通信组件的信息后,使用LUA做了个任务调度器计算,用于获取当前等待信号量,消息队列,消息邮箱等通信组件的任务和任务个数,含等待的最高优先级任务:

if(OSLowestPrio <= 63) then        OSEventCnt = pg_read16(pcb + 8)        OSEventGrp = pg_read8(pcb + 0x0a)        for i=0, OS_EVENT_TBL_SIZE, 1 do                off = (OSEventGrp & (1<> i                if(off == 1) then                        for j=0, 7, 1 do                                OSEventTbl1 = pg_read8(pcb + 0x0b + i)                                off = (OSEventTbl1 & (1<> j                                if(off == 1) then                                        TaskCount = TaskCount + 1                                        TaskBuffer[TaskCount] = j + i*8                                end                        end                end        endelse        OSEventCnt = pg_read16(pcb + 8)        OSEventGrp = pg_read16(pcb + 0x0a)        OSEventTbl1 = pg_read16(pcb + 0x0c)          for i=0, OS_EVENT_TBL_SIZE, 1 do                off = (OSEventGrp & (1<> i                if(off == 1) then                        for j=0, 15, 1 do                                OSEventTbl1 = pg_read16(pcb + 0x0b + 2*i)                                off = (OSEventTbl1 & (1<> j                                if(off == 1) then                                        TaskCount = TaskCount + 1                                        TaskBuffer[TaskCount] = j + i*8                                end                        end                end        endend

关键词: