- 2024-11-13
-
发表了主题帖:
【翌创ETEB-6001DPX测评】第4篇 DAC简单比较测试
一简介
二比较
结构体
ET的
还是比较相似,但是有一些区别
原理还是比较类似
粗略看了下有一些区别,可能不止这么多,学习精力有限,大概看了下
(1) 参考ref 电压,ST是采用的VREF,ET的是可以选择的
(2) 触发源的话,ET的选择更加丰富,ST的
(3) ET有个触发延时,ST的我好像没见到
三 软件配置
float volt = 3.3f;
/* 1. Deinit DAC */
DAC_DeInit(DAC0);
DAC_StructInit(&initCfg);
/* 2. Configure DAC param, software trigger, use inner LDO as Vref */
initCfg.triggerSel = DAC_TRIGGER_SW;
initCfg.triggerDelay = 0xF;
initCfg.refSel = DAC_REFSEL_INNER_LDO;
/* 3. Initial and enable DAC0 */
DAC_Init(DAC0, &initCfg);
/* 4. Clear DAC transfer status */
DAC_ClearTransferStatus(DAC0);
ET配置函数和ST也差不太多
DAC_SetValue(DAC0, DAC_Volt2Value(volt));
ST的配置函数一般是这样
DAC_SetChannel1Data(DAC_Align_12b_R,temp);//12位右对齐数据格式设置DAC值
- 2024-11-10
-
回复了主题帖:
【翌创ETEB-6001DPX测评】第三篇 最大工作频率300MHz CoreMark跑分多少分?
nmg 发表于 2024-11-8 17:36
这个是不是也是它单核M7的成绩?
是的 单核的成绩 回头研究下双核怎么来测评
-
回复了主题帖:
【翌创ETEB-6001DPX测评】第三篇 最大工作频率300MHz CoreMark跑分多少分?
humancat01 发表于 2024-11-3 17:04
我非常支持国产芯片,希望大家都能踊跃购买国产芯片
对 支持国产芯片 国产芯片现在挺好用的
- 2024-11-07
-
回复了主题帖:
有没有什么类似单片机的专用主控?
通用的功能就用通用的
- 2024-11-03
-
发表了主题帖:
【翌创ETEB-6001DPX测评】第三篇 最大工作频率300MHz CoreMark跑分多少分?
一 简介
Coremark是一个综合性的基准测试程序,正如其名称所表示的, CoreMark测试是一个简单而又复杂的基准测试程序,是专门用来测试处理器核心性能的。通过执行常用于应用程序中的简单代码(基本的数据结构和算法)来测试cpu性能。结果是计算每秒钟主程序的迭代次数。
CoreMark测试是最大程度抛弃了程序对系统的依赖,不依赖于系统库函数,对编译器依赖也比较小,因此对于不同平台(如大小尾数,高端或低端处理器),其结果有较好的参考价值。运行 CoreMark测试产生一个简单分数,使用户能够快速比较不同处理器的性能。
CoreMark测试是读/写操作、整数操作和状态机控制等操作混合而成,其代码较小并易于理解。和其他 EEMBC基准测试项目不同, coremark不是某一实际的应用测试,但其实际工作内容,都是一些嵌入式系统中常用的算法,包括矩阵操作、链表操作、状态机操作和CRC算法等。
下载coremark
http://www.eembc.org/coremark/index.php
二 操作步骤
2.1之前的printf工程基础上添加
导入COREMARK C文件到工程
2.2添加路径
2.3修改堆栈大小,不然肯定不够COREMARK消耗
2.4修改部分参数
1加入PTIM的定时配置
之前用ST的一般用SYSTEMTICK的,用PTIMER也是一样
static void PTIMER_peripheral_init(void)
{
PTIM_InitTypeDef init;
/* init structure */
PTIM_StructInit(&init);
// clk = 100MHz / (99 + 1) = 1MHz 100MHZ/(49999+1) = 2khz
init.prescaler = 49999;
/* set period to the maximun*/
init.period = 0xffffffffffffffff;
/* set one shot mode */
init.workMode = PTIM_WORK_ONESHOT;
/* set load mode */
init.loadMode = PTIM_LOAD_IMMEDIATELY;
/* init PIT3 */
PTIM_Init(PIT3, &init);
/* start timer count */
PTIM_Enable(PIT3);
}
GETMYTIME改为PIT3的计数值获取
2 portable_init函数里加入初始化
开启Cache
SCB_EnableICache();
SCB_EnableDCache();
CRG_SYSCNT_ClockSrcSel(CRG_CLKSRC_SYSCNT_XO25M);
SYSCNT_Init();
PTIMER_peripheral_init();
UART0_printf_init();
3至少配置10S以上
#define ITERATIONS 12000
4#ifndef COMPILER_FLAGS
#define COMPILER_FLAGS "-LTO -Omax"
三 测试结果
200MHZ的COREMARK跑分1000分,分数还不错了对比ST的F7主频216M也大差不差了1082的分值
ET6000跑分结果
看了下这时候是200MHZ典型频率情况下的跑分
改成300MHZ主频试试看
看了下300MHZ下PITIMER频率还下降了只有75M APB1,200MHz的时候有100M
于是开始修改PTIMER分频系数,保证NPERSEC为1S
运行出来出错,时间不够10S?
这里我有点想不明白,我设置的是1S,理论上肯定够了Iterations
除非这个PTIMER值不对
只能修改Iterartions到15000
最高跑到了1498的值
- 2024-11-02
-
回复了主题帖:
【翌创ETEB-6001DPX测评】第二篇 USART打印
秦天qintian0303 发表于 2024-11-2 23:11
翌创ETEB-6001串口速率可以达到多少?
手册里只标注了大于1M 没有测试过最大的
-
发表了主题帖:
【翌创ETEB-6001DPX测评】第二篇 USART打印
串口Printf测试
一串口介绍
串口是一种应用十分广泛的通讯接口,可以实现两个设备的相互通讯。USART(通用同步异步收发器)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART,它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信
二串口硬件
ET6000一共有8个UART接口
这里使用UART1
IOC_ConfigStructInit(&Init);
Init.dir = GPIO_DIR_IN_OUT;
Init.mode = IOC_AF_MODE_1;
IOC_Config(IOC_PIN_GPIO3_5, &Init);//RXD
IOC_Config(IOC_PIN_GPIO3_4, &Init);//TXD
三串口结构体比较
前面的大体一样,后面的增加了FIFO的门槛值
四串口PRINTF使用方法
第一种方法:常用的方法,使用微库
直接增加fput函数
int fputc(int ch, FILE *f)
{
DRV_StatusTypeDef status;
UART_TransmitFIFO8BIT(UART1, (uint8_t*)&ch, 1, BLOCK_TRANSMIT_FIFO);
//// //wait Tx-FIFO sendout
status = UART_WaitTransmitDone(UART1, WAITDONE_TIMEOUT);
if(status != DRV_OK)
return ch;
}
第二种方法,不适用微库
增加函数
#if 1
#pragma import(__use_no_semihosting)
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
void _sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc( int ch, FILE *f)
{
DRV_StatusTypeDef status;
UART_TransmitFIFO8BIT(UART1, (uint8_t*)&ch, 1, BLOCK_TRANSMIT_FIFO);
//// //wait Tx-FIFO sendout
status = UART_WaitTransmitDone(UART1, WAITDONE_TIMEOUT);
if(status != DRV_OK)
return ch;
}
#endif
五测试结果
- 2024-10-31
-
发表了主题帖:
【2024 DigiKey创意大赛】带识别功能的垃圾清扫车
带识别的垃圾清扫车
作者:常见泽
一、作品简介
本设计首先是要实现一辆自动的清扫车,最基本的功能需要完成清扫车的前进、后退、左转、右转等车的功能,并可以通过液晶屏幕显示车的状态,模拟中控的显示屏。其次实现吸尘器清扫的功能,通过管道和风扇实现吸取指定的垃圾。第三功能可以识别颜色的垃圾,通过远程遥控或者其他方式可以控制小车识别不同意颜色的分类的垃圾进行清扫,并通过中控屏显示。
二、系统框图
硬件框图:
三、各部分功能说明
(1)继电器开关模块
继电器模块主要是用来控制吸尘器模块的开关,由于吸尘器只有一路,所以选择的1路继电器模块来进行控制吸合。
模块接口:
DC+:接电源正极(电压按继电器要求有5V、12V、24V)
DC-:接电源负极
IN:可以高或低电平控制继电器吸合
继电器输出端
NO:继电器常开接,继电器吸合前悬空,吸合后与COM短接
COM:继电器公用接
NC:继电器常闭接口,继电器吸合前与COM短接,吸合后悬空
(2)OPENMV模块
使用 OpenMV4 系列,其搭配 OV5640 感光元件, CortexM7 处理器,主频为 480MHz,所有 I/O 引脚输出 3.3V且 5V 耐受。其外部留有一定的接口,同时支持通用异步收发传输器(UART)通信、串行外设接口(SPI)通信和集成电路总线(IIC)通信等。
在 OpenMV 系统底层使用 C 语言封装,并提供了 Micro Python 编程接口, OpenMV 是一个面向开发者的机器视觉平台,其中包括专业的集成开发环境 OpenMV IDE。通过 USB 将 OpenMV 连接到计算机上,
开发者便可以在 OpenMV IDE 中使用 Micro Python 编程语言调用 OpenMV 的机器视觉算法或其他功能进行在线的开发与调试。在开发过程中 IDE 提供实时图像数据显示功能,允许开发者直接查看摄像模组传回的图像数据。
(3)显示模块
TFT-LCD 即薄膜晶体管液晶显示器,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。 LCD和单片机的接口采用了FSMC接口,操作起来比较简单。
配置STM32F103ZET6主控板上的与TFT LCD的FSMC接口复用功能,配置RST引脚。初始化序列,就是向 LCD 控制器写入一系列的设置值,这些初始化序列一般 LCD 供应商会提供给客户。设置坐标写 GRAM 指令写 GRAM 来实现,要显示字符/数字,就必须要多次使用这个步骤,从而达到显示字符/数字的目的。
(4)清扫模块
清扫模块使用的是一个小型的桶装的电机小模块,当电机开始动作后,吸管可以从外面吸取一些小的垃圾,开始清扫。
清扫模块通过一个继电器模块与电源相连接,主控控制继电器的吸合。
(5)蓝牙模块
蓝牙模块选择的是ST的蓝牙开发板,NUCLEO-WBA52CG 是一款BLE无线超低功耗板,嵌入了符合 BLE 5.3的强大超低功耗无线电。基于 Arm® Cortex®‑M33 内核的超低功耗无线 STM32WBA52CG 微控制器,采用 UFQFPN48 封装,具有 1 MB 闪存和 128 KB SRAM,支持 Bluetooth® 5.3 的 2.4 GHz射频收发器,带有 TrustZone®、MPU、DSP 和 FPU 的 Arm® Cortex® M33 CPU,集成PCB天线。
(6)蓝牙远程控制模块
nRF52840 Dongle是一款小型、低成本的USB Dongle,它支持蓝牙5.4、蓝牙mesh、Thread、Zigbee、802.15.4、ANT和2.4 GHz私有协议。
这款Dongle是与nRF Connect for Desktop配套使用的完美硬件,因为虽然它的成本低,但与Nordic产品一起使用时仍然支持所有短距离无线标准。这款Dongle专为作为与nRF Connect for Desktop配合使用的无线硬件而设计。对于其他用例,请注意,这款Dongle不支持调试,只支持通过USB对设备进行编程和通信。
这里我准备用USB DONGEL连接到电脑,通过NORDIC的桌面CONNECT和外围的蓝牙设备实现通讯,如下图所示,是利用NORDIC的桌面工具,控制远程的蓝牙设备,蓝牙设备和中控相连接,将信号传送给中控。
四、作品源码
(可下载的项目源码及说明,源码请上传到EEWorld下载中心,下载链接粘贴到作品文档和作品提交帖中)
源代码包括两个部分,如图所示
https://download.eeworld.com.cn/detail/%E5%B8%B8%E8%A7%81%E6%B3%BD1/634836?u_atoken=8cc20ddab16b9a930bcb1491b6c9001e&u_asig=1a0c66d117303663817942302e00eb
XIAOCHE_V03是STM32F103ZET6代码,基于正点原子的战舰开发板,主要用于接收OPENMV串口传来的相关识别数据,解析数据后,开始控制电机的前进、停止、左转、右转和吸尘器的开启等等功能,最后状态通过LCD显示出来。
Shibie.py是基于Python的OPENMV的代码,主要用来检测颜色,并识别,目前这个程序默认的颜色是支持蓝色,因为我实际操作最后的垃圾是蓝色的
五、作品功能演示视频
(视频简介+链接,视频链接:可上传到EEWorld大学堂,观看链接粘贴到作品文档和作品提交帖中,也可直接上传到作品帖中)
https://training.eeworld.com.cn/course/68756/learn?preview=1#lesson/41496
[localvideo]0d777929089b96615c783eb140d20954[/localvideo]
视频简介:
视频中显示的主要包含了以下几段视频综合而成:
识别颜色,然后对颜色进行跟踪,直到靠近这个颜色的清扫物体
靠近之后开启清扫功能,拍摄了清扫功能细节
前进状态显示,显示运行当时的状态
六、项目总结
项目基本完成了既定的功能
小车的前进,后退,前进左转,前进右转等实现
https://bbs.eeworld.com.cn/thread-1296324-1-1.html
小车的蓝牙遥控功能实现
https://bbs.eeworld.com.cn/thread-1296096-1-1.html
小车的识别颜色跟踪功能实现
https://bbs.eeworld.com.cn/thread-1296324-1-1.html
小车的垃圾清扫功能实现
https://bbs.eeworld.com.cn/thread-1295991-1-1.html
小车的显示功能实现
https://bbs.eeworld.com.cn/thread-1297924-1-1.html
七、其他
-
发表了主题帖:
【2024 DigiKey 创意大赛】第7帖 LCD显示
小车带的LCD显示,采用的是ALIENTEK 2.8 寸 TFT LCD 模块,该模块采用 TFTLCD 面板,可以显示 16 位色的真彩图片。 在本章中,我们将利用战舰 STM32 开发板上的 LCD 接口,来点亮 TFTLCD,并实现 ASCII 字符和彩色的显示等功能,在 LCD 上面显示。
以 2.8 寸的 ALIENTEK TFTLCD 模块为例介绍,该模块支持 65K 色显示,显示分辨率为 320× 240, 接口为 16 位的 80 并口。
TFTLCD模块的使用的软件流程
STM32 的 FSMC 将外部设备分为 3 类: NOR/PSRAM 设备、 NAND设备、 PC 卡设备。他们共用地址数据总线等信号,他们具有不同的 CS 以区分不同的设备, TFTLCD 就是用的 FSMC_NE4 做片选, 其实就是将 TFTLCD 当成 SRAM 来控制。
LCD主要用来指示小车的动作状态
小车前进时显示:The car forward
小车停止时显示:The car stop
小车清扫时显示:The car is clearing
小车前进左转时显示:The car foward left
小车前进右转时显示:The car forward right
显示结果如下:
在小车前进时显示FORWARD
[localvideo]138832943174d4835f72393bb973a433[/localvideo]
-
加入了学习《ESP32-S3-LVGL》,观看 自行车智能灯
- 2024-10-29
-
上传了资料:
自动识别的垃圾清扫车
- 2024-10-25
-
回复了主题帖:
【翌创ETEB-6001DPX测评】GPIO测试对比
Jacktang 发表于 2024-10-25 07:28
打开工程整体来说和ST的模式还是很像的,说明模仿的还是可以滴
说明ST的模式深入人心那
- 2024-10-24
-
回复了主题帖:
好久不见吐槽的国产MCU啦,分享下技术控boss曾经遇到坑~
建议还是选大一点单位的MCU
特别是型号特别多的MCU厂家的产品慎选,经常动不动停产
-
回复了主题帖:
今年形式确实不太好,大家的饭碗还安全吗?
集成电路 不太好 目前还算安全,不知道明年啥情况
-
发表了主题帖:
【翌创ETEB-6001DPX测评】GPIO测试对比
拿到开发板了
先来搞定开发环境
通用的KEIL,这个没啥问题,安装下PACK包
安装好后,还有个驱动包,但是实际插上开发板后,没有要求安装驱动,可能和之前的DAP的类似吧
插上USB后,找到DAP仿真器
找到芯片内核
打开工程整体来说和ST的模式还是很像的
对于从事STM32等单片机开发的工程师来说,还是比较容易上手
ET MCU的
STM32 MCU的
ET的多了一个输出电流强度
STM32的多了可以配置OD或者PP
初始化函数的话,感觉ET的的确不是很方便
因为GPIO2_4需要配置成GPIO,所以于鏊选择MODE3
必须要找到这个PIN才能初始化,STM32的直接知道自己是GPIOA还是B就行
找到烧录算法
开始debug
-
回复了主题帖:
再问KIT3连接芯片的问题
搞定了没?
看起来另外供电试试看
- 2024-10-23
-
回复了主题帖:
【2024 DigiKey 创意大赛】第6帖 小车颜色跟踪
Jacktang 发表于 2024-10-20 08:51
在返回的色块对象blob可以调用code方法,来判断是什么颜色的色块,原来是这样子
- 2024-10-18
-
发表了主题帖:
【2024 DigiKey 创意大赛】第6帖 小车颜色跟踪
目前先汇报下项目状况
1.小车前进后退左拐右拐已经实现
2.蓝牙遥控小车已经实现
3.清理模块实现垃圾清理已经实现
这一节主要为了实现小车的颜色追踪
用到的就是之前的OPENMV模块
OPENMV连接上后
可以在IDE里面找到很多类似的源代码,真的超级方便
颜色跟踪涉及的一些主要函数
感光元件即sensor模块,与摄像头有关
img = sensor.snapshot()#拍摄一张照片,img为一个image对象
thresholds是颜色的阈值,注意:这个参数是一个列表,可以包含多个颜色。如果你只需要一个颜色,那么在这个列表中只需要有一个颜色值,如果你想要多个颜色阈值,那这个列表就需要多个颜色阈值。注意:在返回的色块对象blob可以调用code方法,来判断是什么颜色的色块。
roi是“感兴趣区”。在使用统计信息中已经介绍过了。 left_roi = [0,0,160,240] blobs = img.find_blobs([red],roi=left_roi)
x_stride 就是查找的色块的x方向上最小宽度的像素,默认为2,如果你只想查找宽度10个像素以上的色块,那么就设置这个参数为10: blobs = img.find_blobs([red],x_stride=10)
y_stride 就是查找的色块的y方向上最小宽度的像素,默认为1,如果你只想查找宽度5个像素以上的色块,那么就设置这个参数为5:
clock.tick() # Track elapsed milliseconds between snapshots().
img = sensor.snapshot() # Take a picture and return the image.
# pixels_threshold=100, area_threshold=100
blobs = img.find_blobs([blue_threshold], area_threshold=150);
cx=0;cy=0;
if blobs:
#如果找到了目标颜色
max_b = find_max(blobs);
# Draw a rect around the blob.
img.draw_rectangle(max_b[0:4]) # rect
#用矩形标记出目标颜色区域
img.draw_cross(max_b[5], max_b[6]) # cx, cy
img.draw_cross(160, 120) # 在中心点画标记
#在目标颜色区域的中心画十字形标记
cx=max_b[5];
cy=max_b[6];
img.draw_line((160,120,cx,cy), color=(127));
#img.draw_string(160,120, "(%d, %d)"%(160,120), color=(127));
img.draw_string(cx, cy, "(%d, %d)"%(cx,cy), color=(127));
OPENMV将坐标结果传送给STM32F103ZET6中控板卡
中控板卡再根据坐标结果,控制电机前进还是后退 还是左拐 还是右拐,看下效果
[localvideo]ca26c3db3c763bb8ae242741bb13e21b[/localvideo]
- 2024-10-16
-
回复了主题帖:
测评入围名单: 国产高性能 双核M7 MCU,翌创ET6001
个人信息无误,确认可以完成测评分享计划。
-
回复了主题帖:
【2024 DigiKey 创意大赛】第五帖 蓝牙遥控车
wangerxian 发表于 2024-10-15 18:33
这走路好像不是很丝滑,接收到一个指令动一下?
是的 家里小 跑快了 来不及录像