- 2024-12-18
-
回复了主题帖:
《深度学习的数学——使用Python语言》第2章 概率论学习
Jacktang 发表于 2024-12-17 07:31
举的两个例程进行实操进行测试很有意思
理论联系实际
- 2024-12-16
-
发表了主题帖:
《深度学习的数学——使用Python语言》第2章 概率论学习
概率是一个介于0-1之间的数,用于衡量事情发生的可能性,如果事件一定不会发生,那么概率为0。
我们从最基础的概率法则开始
下面对这一章部分例程进行实操进行测试
一、模拟1000 000次(N)掷三枚硬币(M)的实验,0次 1次 2次或3次硬币朝上的次数被保存在变量heads中。
对于0次 1 次 2次 3次正面的概率输出
np.zeros() 函数是 NumPy 数组库的一部分,用于生成元素全部为 0 的数组。其基本语法结构如下:
numpy.zeros(shape, dtype=float, order='C')
函数的作用是,返回一个随机整型数,其范围为[low, high)。如果没有写参数high的值,则返回[0,low)的值。
np.bincount()是numpy库中的一个方法,用于获得numpy数组内提供的每个元素的频率。numpy bincount()方法将arr_name、weights 和minlength 作为参数,并返回整数的ndarray。
二、通过代码来模拟随选过程,并证明任意两个人同一天出生的概率是否为0.3%
模拟100000轮,两个人生日同一天出生的概率,出生日期位于0-364的随机整数
计算出的概率为
(base) C:\Users\Lenovo\PycharmProjects\untitled1>python nu.py
[0.124775 0.374616 0.375565 0.125044]
0.002940
这就破解了一个生日难题
样本空间是365天,每一天被选中的概率是1/365=0.00274
两个人要同一天的话,P(两个人生日不同)=1-1/365=0.00973
- 2024-12-13
-
回复了主题帖:
《深度学习的数学——使用Python语言》第一章 搭建及简单测试
nmg 发表于 2024-12-13 15:23
开启算数之旅
整本书我浏览了下 还真的是算数之旅
- 2024-12-11
-
发表了主题帖:
《深度学习的数学——使用Python语言》第一章 搭建及简单测试
目前我准备的开发测试环境是windows
安装python的开发环境
安装好python环境后开始安装numpy库
NumPy是Python科学计算的基础库,提供了一种优化的多维数组对象,以及用于处理这些数组的工具。它可以用于各种计算任务,包括线性代数、统计、傅里叶变换和图形绘制等。
pip install numpy
安装好后开始一些测试
比如数组、运算等测试
-
回复了主题帖:
读书入围名单: 《Linux内核深度解析》
个人信息无误,确认可以完成阅读分享计划
- 2024-12-10
-
回复了主题帖:
现在用STM32的还多吗?
我所有做的项目 要么是ST 要么是ST的国产化原位替换
反正都是STM32之类系列
-
回复了主题帖:
哈哈哈,被笑到了,友友们有这么干的吗
这个是有点调皮了
哈哈
- 2024-12-06
-
发表了主题帖:
【翌创ETEB-6001DPX测评】第8篇 FPU 测试以及Julia实验测试
一 FPU简介
FPU 即浮点运算单元(Float Point Unit)。
浮点运算,对于定点 CPU(没有 FPU 的 CPU)来说必须要按照 IEEE-754 标准的算法来完成运算,是相当耗费时间的。而对于有 FPU 的 CPU来说,浮点运算则只是几条指令的事情,速度相当快。
二 测试项
1. arm_sin_f32
2. arm_cos_f32
3. acosf
4. atanf
5. 浮点数乘法
定义两个浮点数,进行乘法1000次运算
float a = 3.141593f;
float b = 0.314159f;
6. JULIA计算集
ulia分形即Julia集,它最早由法国数学家Gaston Julia发现,因此命名为Julia(朱利亚)集。Julia集合的生成算法非常简单:对于复平面的每个点,我们计算一个定义序列的发散速度
三 测试步骤
3.1添加部分驱动文件
3.2 添加算法函数文件
3.3 添加路径
3.4 添加头文件
3.5 测试开始
通过调试器进入调试状态
可以看到汇编指令VSTR
看下M7手册,是浮点数的指令
测试结果:
-
回复了主题帖:
读书活动入围名单: 《深度学习的数学——使用Python语言》
个人信息无误,确认可以完成阅读分享计划
- 2024-12-03
-
回复了主题帖:
【翌创ETEB-6001DPX测评】第7篇 定时器测试
humancat01 发表于 2024-12-3 17:06
我支持国产芯片,希望大家多使用国产芯片我支持国产芯片,希望大家多使用国产芯片我支持国产芯片,希望大家 ...
必须支持国产芯片!!!!!!
- 2024-12-02
-
发表了主题帖:
【翌创ETEB-6001DPX测评】第7篇 定时器测试
一 定时器简介
ET系列MCU一共分为4个定时器
PITIMER通用定时器
STIMER超级定时器
ETIMER增强型定时器
SRPWM高精度脉宽调制器
STM32F7的定时器分为
基本定时器、通用定时器、高级控制定时器
总结:
第一种定时器,ET叫通用定时器,ST叫基本定时器,功能看起来感觉是差不多
第二种定时器,ET叫超级定时器,ST叫通用定时器,ET超级定时器其实没有什么大变化,只是增加了4个比较事件和触发源等,ST的则升级较多,带了PWM、比较器、捕获等等
第三种定时器,ET叫增强型定时器,ST叫高级定时器,ST的应该是扩展了一些应用场景,比如电机控制等,增加了死区等等。ET的升级则比较多,在PWM发波、捕获功能、中断等方面感觉是远超过ST的功能的。但是是不支持死区控制的,所以可能电机驱动等场合可能不太好用。
第四种定时器,ET增加了高精度脉宽调制器SRPWM,12通道共24路PWM,支持高精度调制,支持独立的定时单元,整个功能非常强大,感觉已经远超过了ST的高级定时器功能
基本的定时器的结构体比较
ET的结构体
ST的结构体
二 代码测试
2.1 PTIMER和STIMER,两个差不多,用来做一些计数定时
ST的初始化函数大致这样
ET的定时器基本的初始化
差不太多
测试代码:
start = STIM_GetCounterValue(STIM3);
SYSCNT_Delay(1000);
end = STIM_GetCounterValue(STIM3);
diff = end > start ? end - start : 0xffffffffffffffff - start + end;
printf("STIM3 counter start is %lldus, end is %lldus, diff is %lldus in 1000000us delay\n", start, end, diff);计算定时器的时间
测试结果:
2.2 ETIMER PWM输出
ST的初始化函数
PWM差异还是有一些,毕竟ET的PWM增加了要好一些功能
PWM输出这一块多了一个COMPA和COPMA+COMPB模式
没有深入研究,至少编程感觉是计算占空比比ST是容易些了,这种输出方式对新手来说感觉配起来更加简单
代码设置为COMPA模式
TIMER小于COMPA,PWM输出1
计算公式: T = (period + 1) * (prescaler + 1) / Fetimer,周期:250us
频率:4KHz
COMPA的值设置为Period/4,小于COMPA输出1,也就是占空比:25%
这个地方改占空比很方便了
这个IO口复用,比STM32的简单太多了,基本就一句语句就完成了复用功能。
IOC_Config(IOC_PIN_GPIO_PLL_REF, &cfg); // 将该管脚复用为etimer0
逻辑分析仪接在132脚上测试波形
输出结果:
- 2024-11-29
-
回复了主题帖:
来,来,来,撒分了!RTOS要学,要会,要用吗?
还是要学 有些应用感觉RTOS更加方便把
不过MCU目前我还是裸机跑得多
目前再看RTT,感觉还不错
- 2024-11-28
-
回复了主题帖:
【翌创ETEB-6001DPX测评】第6篇 时钟简单测试
freebsder 发表于 2024-11-27 18:47
外设的操作上有多少不一样?
差距不太大
有些外设操作起来简单些
总体还行
- 2024-11-27
-
回复了主题帖:
【翌创ETEB-6001DPX测评】第6篇 时钟简单测试
wangerxian 发表于 2024-11-26 19:02
外部晶振频率这么高的确实少见。
是的 是很高 高的HSE我都没用过 不知道是不是某些行业有这个需求
-
回复了主题帖:
【翌创ETEB-6001DPX测评】第6篇 时钟简单测试
freebsder 发表于 2024-11-27 11:45
国产仿H7的?
也不算仿H7
H7性能还是明显高一大坨
这个顶多接近F7吧,不过是双核的F7
- 2024-11-26
-
发表了主题帖:
【翌创ETEB-6001DPX测评】第6篇 时钟简单测试
一 时钟简介
在嵌入式系统和微控制器(MCU)的应用中,时钟电路是关键部分之一。它为整个系统提供时间基准,确保各个部分的协调运行。
ET6000和常规MCU一样具有以下几个时钟
二 时钟比较
2.1 HSE时钟
ET6000的HSE支持12.5M-37.5M的晶振
STM32H7的HSE支持的话4M-26M
ST支持的外部晶体是可以更低频率,ET的可以更高频率。不过ET不支持8M还是很少见,一般低频至少要8M吧
2.2内部时钟HSI
HSI 时钟信号是由内部高频 RC 振荡器 (25 MHz) 生成, HSI 可直接用作为系统时钟,也可作为 PLL 参考时钟输入
ET手册里看出来内部的时钟是25M
STM32F7内部时钟是16M
2.3内部低速时钟LSI
LSI 低频 RC 振荡器是片内低速低功耗振荡器, 可作为低功耗时钟源,在停机和待机模式下基于 LSI 时钟保持运行,也可供系统计数器 (SYSCNT) 和看门狗 (WDG) 使用; LSI 的时钟频率 256 kHz (正负 50%频偏)
STM32F7的LSI是32K
2.4系统时钟频率
STM32F7同样M7内核,最大支持的频率为216M
DMIPS(Dhrystone Million Instructions executed Per Second,1秒处理指令数)
官方跑分的话
ET6000运行200M的情况下,跑分大概是1000分
同样的时钟频率下,跑分非常接近。
三 一些简单测试
3.1最大频率测试
典型工作频率200MHz,最大频率300MHz
官方的库还是比较完善,改起来不费劲
仿真运行300M程序 未发现异常
跑CoreMARK跑分300MHz也正常,说明超频最大300MHz运行完全没问题
3.2 HSI 测试
CRG_SYSCNT_ClockSrcSel(CRG_CLKSRC_SYSCNT_XO25M);
选用内部25M测试是否准确
CRG_SYSCNT_ClockSrcSel(CRG_CLKSRC_SYSCNT_XO25M);
SYSCNT_Init();
SYSCNT_Delay(1000);
延时1S
测试准确
这个有点类似HAL库里的 HAL_Delay
那个是基于SYSTICK
这个可以基于不同的时钟
- 2024-11-25
-
回复了主题帖:
【翌创ETEB-6001DPX测评】第5篇 测试ADC最大采样率
Jacktang 发表于 2024-11-20 07:22
采样率的计算是技术技巧,收藏学习
现学现卖 第一次找到这种测试方法
- 2024-11-19
-
发表了主题帖:
【翌创ETEB-6001DPX测评】第5篇 测试ADC最大采样率
一 基本参数
看下手册里的基本参数
可以看到基本的信息,12Bit SAR ADC 采样率最高可到4MBPS
不知道这个4M是单独的一个通道,还是双ADC采样的最大采样率
再翻看一下数据手册
转换周期是固定的13个CLK,ST的是可以配置的
二 ADC采样
搞一个单通道采样吧,自带的例程里都有,但是我的自带例程缺少头文件,没法编译,自己搞一个试试了
ET的ADC结构体,相对简化了一些
STM32的
ADC配置成SRPWM触发
测试一下实验结果
外接的1.1V 测试比较准确
三 ADC采样率最大测试
ADC的采样速率必须小于转换速率,常用单位是 ksps 和 Msps,表示每秒 采样千/百万次(kilo / Million Samples per Second)。
来计算这个采样率
我采用的方法是使用定时器定时采样,一个ADC的15个通道一起采样,定时时间是A,如果能在时间A内完成15个通道的采样,说明采样率>A/15,不断调试PITIMER的定时时间,直到无法完成15个通道的采样,则得到了最大的采样率
ADC的配置代码
static void ADC_Config(void)
{
uint8_t i;
ADC_InitTypeDef stInit;
/* 复位ADC,并开启该外设的时钟 */
ADC_DeInit(ADC0);
/* 校准ADC */
ADC_StartCalibration(ADC0);
/* 初始化ADC */
ADC_StructInit(&stInit);
stInit.virtualChannelMask = ADC_VIRTUAL_CHANNELALL;
stInit.workMode = ADC_WORK_MODE_SINGLE;
stInit.trigMode = ADC_TRIGGER_MODE_CONTINUOUS;
stInit.trigger = ADC0_TRIGGER_PIT0;
ADC_Init(ADC0, &stInit);
/* 将所有的虚拟通道都映射到模拟通道0 */
for(i = 0; i < 16; i++)
{
ADC_ACRemapSingle(ADC0, (uint16_t)BIT_MASK(i), ADC_ANALOG_CHANNEL0);
}
/* 选择虚拟通道事件冲突的处理方式 */
ADC_EventConflictSel(ADC0, ADC_EVT_CONFLICT_DEAL_LOW_PRIORITY_QUEUE);
/* 开启中断功能 */
ADC_ITEnable(ADC0,ADC_IT_RESULT_VC15);
ADC_ITUnMask(ADC0,ADC_IT_RESULT_VC15);
NVIC_EnableIRQ(ADC0_IRQn);
/* 使能ADC */
ADC_CoreEnable(ADC0);
/* 使能虚拟通道 */
ADC_VCEnable(ADC0, ADC_VIRTUAL_CHANNELALL);
}
开始调试PITIMER 100MHz
手动不断修改period这个值,一直修改,当改成359-1就无法进入ADC完成中断了,是个极限值了
100M/360*15 = 1500/360 M = 4.16666M
和手册匹配
- 2024-11-16
-
回复了主题帖:
【翌创ETEB-6001DPX测评】第4篇 DAC简单比较测试
Jacktang 发表于 2024-11-16 08:43
DAC简单比较测试
高手评测重点交代很清楚,学习了
共同学习
- 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值