请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

 找回密码
 立即注册
查看: 101430|回复: 17
收起左侧

[嵌入式周报] 《安富莱嵌入式周报》第284期:2022.09.19--2022.09.25

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
发表于 2022-9-27 05:29:44 | 显示全部楼层 |阅读模式
image.png

GUI综合实战视频教程第1期:综合UI项目规划以及AppWizard和ThreadX GUIX初识(2022-09-24)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=115615



视频版:

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





1、Matlab2022b发布,支持从 .NET 应用程序调用 MATLAB

https://ww2.mathworks.cn/product ... atest_features.html

视频:


image.png

详细更新如下:

image.png


2、FatFS作者ChaN老师分享的耳机放大器文章说明已经发布,包含固件源码

http://elm-chan.org/works/hpamp/report.html

image.png
image.png

image.png


[C] 纯文本查看 复制代码
/*-------------------------------------------------*/
/* Headphone Amplifier Controller    (C)ChaN, 2022 */
/*-------------------------------------------------*/

#include <avr/io.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>

FUSES = {0x6A, 0xFD};                /* ATtiny13A fuses: Low, High */


#define BLV_LOW                2.3                /* Low battery threshold [volt] */
#define BLV_OFF                2.1                /* Shutdown threshold [volt] */
#define        MUL_VIN                0.333
#define        VREF                1.1
#define VOLT2AD(v)        ((uint16_t)(v * MUL_VIN * 1024 / VREF))

#define HOLD_TIME        50                /* Button hold time to trigger on/off (x10ms) */


#define        POWER_ENABLE()        PORTB |= _BV(3)
#define        POWER_DISABLE()        PORTB &= ~_BV(3)
#define        OUT_ENABLE()        PORTB |= _BV(0)
#define        OUT_DISABLE()        PORTB &= ~_BV(0)
#define        LED_ON()                PORTB |= _BV(2)
#define        LED_OFF()                PORTB &= ~_BV(2)
#define BUTTON                        (!(PINB & _BV(1)))


volatile uint8_t Stat;        /* Battery status: 0=empty, 1=low, 2=ok */



ISR(INT0_vect)                        /* Wake-up from sleep mode */
{
        GIMSK = 0;        /* Disable INT0 (on button down) */
}



ISR(TIM0_COMPA_vect)        /* 100Hz timer interrupt */
{
        uint8_t n;
        static uint8_t blink;


        n = Stat;
        if (n == 2 || (n == 1 && (++blink & 32))) {
                LED_ON();
        } else {
                LED_OFF();
        }
}



static void delay_10ms (void)
{
        set_sleep_mode(SLEEP_MODE_IDLE);        /* Set Idle mode */
        sleep_mode();
}



static uint8_t test_button (void)        /* b0:status, b1:trigger */
{
        static uint8_t btn;


        if (BUTTON) {
                if (btn < HOLD_TIME) {
                        if (++btn == HOLD_TIME) return 3;
                }
                return 1;
        } else {
                btn = 0;
                return 0;
        }
}


static void power_off_mode (void)
{
        uint8_t n;


        Stat = 0;        /* LED off */
        for (;;) {
                /* LED off, power off, headphone off */
                LED_OFF();
                OUT_DISABLE();
                POWER_DISABLE();

                /* Wait for button released (100ms) */
                for (n = 10; n; n--) {
                        delay_10ms();
                        if (test_button() != 0) n = 10;
                }

                /* Sleep and resume */
                TIMSK0 = 0;                                        /* Disable timer interrupt */
                cli();                                                /* Disable interrupts for critical operations */
                GIMSK = _BV(INT0);                        /* Enable button down interrupt (INT0) */
                set_sleep_mode(SLEEP_MODE_PWR_DOWN);        /* Set Power-Down mode*/
                sleep_enable();                                /* Enable sleep mode */
                sleep_bod_disable();                /* Disable BOD in sleep mode */
                sei();                                                /* Eneble interrupt to wake-up */
                sleep_cpu();                                /* Enter sleep mode */

                /*------ Sleeping ------*/

                sleep_disable();                        /* Disable sleep mode */
                TIMSK0 = _BV(OCIE0A);                /* Enable timer interrupt */

                /* Press and hold the button for HOLD_TIME to start */
                do {
                        delay_10ms();
                        n = test_button();
                } while (n == 1);
                if (n == 3) break;        /* Exit if the button was held for HOLD_TIME, or stay power off */
        }

        POWER_ENABLE();                /* Enable DC-DC converter */
        Stat = 2;                        /* LED on */
        for (n = 30; n; n--) delay_10ms();        /* 300ms */
        OUT_ENABLE();                /* Ebable headphone output */
}



static uint8_t battery_level (void)        /* Test battery status (2=ok, 1=low, 0=empty) */
{
        uint16_t adc;


        ADMUX = _BV(REFS0) | 2;                                        /* Select ADC2 with Vref = internal 1.1V */
        ADCSRA = _BV(ADEN)|_BV(ADSC)|_BV(ADIF)|0b011;        /* Enable ADC and start conversion */
        while (!(ADCSRA & _BV(ADIF))) ;                        /* Wait for EOC */
        adc = ADC;
        ADCSRA = 0;                                                                /* Disable ADC */

        if (adc < VOLT2AD(BLV_OFF)) return 0;        /* Empty? */
        if (adc < VOLT2AD(BLV_LOW)) return 1;        /* Low? */
        return 2;
}



int main (void)
{
        uint8_t btct, btlv;


        /* Initialize GPIOs */
        PORTB = 0b00000;                /* Initialize PORTB as: */
        DDRB  = 0b01101;                /* BP4=Vbat, PB3=Power, PB2=LED, PB1=Button, BP0=OutEnable */
        DIDR0 = 0b10000;                /* Disable digital input on PB4 */

        /* Enable TC0 in 100 Hz interval timer */
        OCR0A = F_CPU / 256 / 100 - 1;
        TCCR0A = _BV(WGM01);
        TCCR0B = 0b100;
        TIMSK0 = _BV(OCIE0A);

        sei();

        for (;;) {
                power_off_mode();        /* Power-off and wake-up */

                btct = btlv = 0;
                for (;;) {
                        delay_10ms();
                        if (test_button() == 3) break;        /* Test button */
                        btlv += battery_level();                /* Test battery level */
                        if (++btct == 50) {                                /* 50 times averaging */
                                if (btlv < 25) break;                /* Battery empty? */
                                Stat = btlv < 75 ? 1 : 2;        /* Battery ok or low? */
                                btct = btlv = 0;
                        }
                }
        }
}




3、分享个非常不错的JSON数据可视化在线软件

https://jsoncrack.com/editor

从效果来看非常不错,大大方便数据内容查看

image.png


4、英伟达发布2000TFLOPS的雷神芯片Thor,用于自动驾驶

https://blogs.nvidia.com/blog/2022/09/20/drive-thor/
https://www.anandtech.com/show/17582/nvidia-drops-drive-atlan-soc-introduces-2-pflops-drive-thor-for-2025-autos

在上周举行的全球开发者大会上,除了RTX4090显卡,就是这个了。
雷神Thor搭载了770亿晶体管,在算力上达到了2000TFLOPs(1TOPS代表每秒能进行10^12次操作),Thor的算力是特斯拉FSD芯片的14倍。

Atlan方案已经放弃
image.png

image.png

image.png



5、ST推出基于TOF的预定义手势检测系统

https://www.st.com/en/evaluation-tools/aek-sns-2tofm1.html?ecmp=tt28526_gl_social_sep2022

该套件包括两个飞行时间测距传感器,彼此相距23厘米。此方案专为电动升降门应用而设计,可通过预定义的脚部移动来打开/关闭行李箱

image.png
对应的官方文档里面有详细说明

image.png


6、NASA开源的飞行软件和嵌入式系统框架fprime

https://nasa.github.io/fprime/

fprime是一个软件框架,用于快速开发和部署嵌入式系统和航天应用。最初是由NASA的喷气推进实验室开发的开源软件,已成功被用于多种太空应用。它已被用于但不限于立方体卫星,小型卫星,仪器。
相关的资源链接全部提供了

image.png

7、TI分享的CANFD SiC信号改进型收发器视频教程

使用SiC版收发器,可以有效降低信号振铃问题,效果如下:

一般将CANFD的数据通信阶段速度提到8Msps问题大不

https://training.ti.com/designing-can-signal-improvement-capability-sic-transceivers

image.png

image.png



8、CMSIS-DSP软件包升级至V1.14

https://github.com/ARM-software/CMSIS-DSP/releases

最近更新频繁了,基本上半个月就更新一次。针对计算图,增加了Event Recorder支持

image.png







9、Google推出iMX RT1176配合自家珊瑚TPU的套件

https://coral.ai/products/dev-board-micro

规格:

image.png
效果:


image.png

还有个对应的POE和无线扩展板

image.png image.png



10、各大IC厂家的参考设计案例

https://www.ti.com/reference-designs/index.html
https://www.analog.com/en/design-center/reference-designs.html
https://www.maximintegrated.com/ ... -design-center.html
https://www.microchip.com/en-us/tools-resources/reference-designs

之前分享了TI,ADI和美信,这次加入Microchip

数千个完整设计案例供大家参考。

TI:


美信:


ADI:


Microchip
image.png


11、牛屎芯片替换

https://www.instructables.com/Replacing-a-40-Pin-COB-With-a-44-Pin-QFP/

搞牛屎芯片替换的玩家非常多,其中尤其以替换万用表的玩家,因为三位半常用的芯片是7106/7107,四位半常用的是7129/7135

这个网上的一位玩家替换效果:

image.png
磨掉COB环氧树脂,使用这种封装的优势是成本低

image.png


image.png

image.png

image.png

image.png

换上新芯片的效果:

image.png


12、国产海天芯生产的三位半HT7106和四位半HT7135万用表IC

http://www.htcsemi.com/acpzs.asp?pages=1&dlb_id=37&xlb_id=14

三位半HT7106价格在3-6块,四位半的6-9块,价格还算非常给力。

像TI,瑞萨和美信,也都有相应系列的产品。
image.png

image.png


13、国内资讯

(1)沁恒的应用方案中心

做的也非常不错

https://www.wch.cn/application.html

image.png
他们还有一个选型框图做的也非常好

下面的小方框可以方便的查找



(2)兆易创新发布GD32A503系列首款车规级MCU

https://www.gigadevice.com/zh-hans/press-release/gigadevice-launches-gd32a503/

基于Cortex-M33内核,40nm车规级制程和高速嵌入式闪存eFlash技术,配备384KB Flash和48KB SRAM,另有专用代码空间可配置为64KB DFlash/4KB EEPROM

另外他们的TUV安全认证应该还在进行中,

image.png

(3)Holtek推出多款用于电机控制的单片机

https://www.holtek.com.cn/web/guest/news/-/news-center/search/all/2022/all

image.png
image.png

image.png


image.png

(4)极海通过TüV莱茵ISO 26262功能安全管理体系认证

https://www.geehy.com/news/news_detail/109

这个还是很给力的,直接上证书
image.png



14、H7-TOOL本周进展

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

(1)更新2.1.9版本所需功能。
(2)RTOS Trace初步完成uCOS-III,增加ThreadX的Trace中


uCOS-III初步的界面效果,最终效果略有不同,部分信息会在控件上刷新

image.png

这两天增加ThreadX的关键信息Trace,能正常检索了,还要继续改进。

image.png


(3)H7-TOOL的截图功能关键部分都已经打通了,下面是截图SDRAM显存数据效果

用户仅需接上SWD接口即可,无需用户嵌入代码到目标,填入显存地址即可。

image.png

而截图RA8875屏,太不容易了,坑有点多,因为需要通过SWD接口控制RA8875进入读像素操作,最后也是最关键的一步就是读取是显存地址自增模式,这个坑太多了,比写显存地址自增麻烦很多,花了很长时间才搞定

image.png




评分

参与人数 1金币 +8 收起 理由
龙之谷 + 8 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2022-9-27 05:29:56 | 显示全部楼层
终于通宵更新完毕。
回复

使用道具 举报

1

主题

131

回帖

134

积分

初级会员

积分
134
发表于 2022-9-27 07:20:16 | 显示全部楼层
感谢白工分享,每周必看。多休息,保重身体,别通宵啊
回复

使用道具 举报

36

主题

249

回帖

357

积分

高级会员

积分
357
发表于 2022-9-27 08:21:59 | 显示全部楼层
楼主辛苦,第一次离沙发这么近
回复

使用道具 举报

3

主题

1216

回帖

1225

积分

至尊会员

积分
1225
发表于 2022-9-27 08:42:37 | 显示全部楼层
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2022-9-27 08:50:26 | 显示全部楼层
真的辛苦了!
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2022-9-27 08:50:32 | 显示全部楼层
回复

使用道具 举报

37

主题

149

回帖

260

积分

高级会员

积分
260
发表于 2022-9-27 09:20:01 | 显示全部楼层
楼主辛苦了
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-9-27 09:22:14 来自手机 | 显示全部楼层
ヾ()~非常好
回复

使用道具 举报

1

主题

51

回帖

54

积分

初级会员

积分
54
发表于 2022-9-27 09:47:12 | 显示全部楼层
硬汉哥,真的肝
回复

使用道具 举报

5

主题

61

回帖

76

积分

初级会员

积分
76
发表于 2022-9-27 09:59:31 | 显示全部楼层
大佬要多注意身体,要有正常的作息时间。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2022-9-27 13:22:48 | 显示全部楼层
更新介绍里面的一个小错误。
回复

使用道具 举报

2

主题

34

回帖

40

积分

新手上路

积分
40
发表于 2022-9-27 13:33:04 | 显示全部楼层
各大厂家的参考设计案例这个太给力了,原理图和PCBlayout都有,超级赞啊
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2022-9-27 22:51:42 | 显示全部楼层
辛苦啦!  想咨询 云途半导体   http://ytmicro.com/about.php    建议应届生加入吗?
回复

使用道具 举报

37

主题

149

回帖

260

积分

高级会员

积分
260
发表于 2022-9-28 10:57:06 | 显示全部楼层
楼主,新的guix教程在哪发的?
回复

使用道具 举报

0

主题

48

回帖

48

积分

新手上路

积分
48
发表于 2022-9-29 09:21:29 | 显示全部楼层
现在这个资料挺全的
回复

使用道具 举报

0

主题

53

回帖

53

积分

初级会员

积分
53
发表于 2022-9-29 16:31:13 | 显示全部楼层
13、国内资讯

国产MCU这几年发展迅猛,但是还有很多不足
比如,开发工具,技术文档,SDK等配套的软硬件

推广也不给力,比如,官方评估板贵的要死,上面就两颗芯片,买100多甚至200
有的厂家,在官网找不到技术文档和SDK,没有例程

在这点上,做的比较好的是沁恒,几乎每个芯片的主页都能找到对应的技术文档(而且是中文的)、MDK支持包、SDK和例程等等
回复

使用道具 举报

0

主题

8

回帖

8

积分

新手上路

积分
8
发表于 2023-7-18 16:07:29 | 显示全部楼层
mark分享个非常不错的JSON数据可视化在线软件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-3-29 19:49 , Processed in 0.412892 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表