viphotman

  • 2019-10-10
  • 发表了主题帖: NUCLEO-G431RB测评 使用库做FFT

    本帖最后由 viphotman 于 2019-10-10 16:24 编辑 NUCLEO-G431RB测评 FFT 一 文件位置 在STM32CubeG4_V1.1.0\STM32Cube_FW_G4_V1.0.0\Drivers\CMSIS\Lib\ARM 里有ARM 公司的库文件; arm_cortexM4lf_math.lib 是小端模式的有浮点运算的M4的lib; 还要下面的.h文件; 二 FFT的函数 arm_cfft_f32 函数   void arm_cfft_f32(   const arm_cfft_instance_f32 * S,   float32_t * p1,   uint8_t ifftFlag,   uint8_t bitReverseFlag); S 参数是是一个结构体指针是一个结构体指针,当一个常量用,和旋转因子有关,不同点的FFT选不同的参数; p1 参数是输入数组,长度应该是运算点数的两倍,计算完输出的数据也放这里; S 参数是FFT正反变换,=0是正变换,1是反变换 bitReverseFlag 参数是倒位序   三 工程修改  加入宏ARM_MATH_CM4;   加入头文件地址   加入lib 加入代码 /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "arm_math.h" #include "arm_const_structs.h"  加入变量 #define NPT 2048//4096 uint32_t fftSize = NPT/2; //NPT/2 uint32_t ifftFlag = 0; uint32_t doBitReverse = 1; float32_t fft_input[NPT]; float32_t fft_output[NPT]; //NPT/2 加入fft测试code ,再在main中调用这个函数;   void fft_test() { int i = 0; // for(i=0;i<NPT/2 ;i++) { // 100Hz sin, 1000 sample fft_input[2*i] = 1.2f*arm_sin_f32(2*3.1415926f*55*i/1000)+1; fft_input[2*i+1] = 0; } /* Ö´ÐÐFFTÔËË㣬½á¹û´æ·ÅÔÚÊäÈëÊý×é */ arm_cfft_f32(&arm_cfft_sR_f32_len1024, fft_input, ifftFlag, doBitReverse); //´Ë´¦Ê¹ÓÃarm_cfft_sR_f32_len1024Òò×Ó£¬Êý¾Ý±ØÐëÊÇ2048 ÊÇ*SX2Åà¹Øϵ //arm_cfft_f32(&arm_cfft_sR_f32_len2048, fft_input, ifftFlag, doBitReverse); //arm_cfft_f32(&arm_cfft_sR_f32_len4096, fft_input, ifftFlag, doBitReverse); /* È¡¸÷¼ÆËã½á¹ûµÄ¾ø¶ÔÖµÀ´µÃµ½ÆµÂÊÇ¿¶È(·ùÖµ) */ //FFTµãÊýΪ&arm_cfft_sR_f32_len32/2(³ýÒÔ2)²ÅÊÇFFTµÄµãÊý arm_cmplx_mag_f32(fft_input, fft_output, fftSize); /* È¡×î´óÖµ¼°ÆäÖ÷ƵλÖà */ //arm_max_f32(fft_output, fftSize, &maxValue, &testIndex); //printf("maxValue=%f\r\n", maxValue); for(i=0; i<fftSize; i++) { printf("fft %d = %f\r\n",i, fft_output); } } 修改下面code fft_input[2*i] = 1.2f*arm_sin_f32(2*3.1415926f*55*i/1000)+1; // 55Hz 的sin波 1000Hz采样率 打结果如下,索引56是最大值,计算现在信号的频率 = 1000/1024 *56 = 54.68Hz fft_input[2*i] = 1.2f*arm_sin_f32(2*3.1415926f*100*i/1000)+1; // 100Hz 的sin波 1000Hz采样率 打结果如下,索引102是最大值,计算现在信号的频率 = 1000/1024 *102 =99.609Hz   此内容由EEWORLD论坛网友viphotman原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2019-10-09
  • 发表了主题帖: NUCLEO_G431RB测评 添加UART

    本帖最后由 viphotman 于 2019-10-9 13:30 编辑 NUCLEO_G431RB测评 ADC例程中加入UART 一 硬件电路    G431的UART连接到ST LINK V3的虚拟串口上;   ADC1 channal6  是PC0;     二 软件修改  在STM32CubeG4_V1.1.0\STM32Cube_FW_G4_V1.0.0\Projects\NUCLEO-G431RB\Examples\ADC\ADC_OffsetCompensation\MDK-ARM 这个例程上修改;  先加入加UART功能;  1 stm32g4xx_nucleo_conf.h里的宏 #define USE_NUCLEO_64 /* COM usage define */ #define USE_BSP_COM_FEATURE 1U/0U /* COM log define */ #define USE_COM_LOG 1U//0U /* IRQ priorities */ #define BSP_BUTTON_USER_IT_PRIORITY 15U 2 INIT UART  在main 初始化里加入下面code; // BSP COM Init lpuart.BaudRate = 115200; lpuart.WordLength = UART_WORDLENGTH_8B; lpuart.StopBits = UART_STOPBITS_1; lpuart.Parity = UART_PARITY_NONE; lpuart.HwFlowCtl = UART_HWCONTROL_NONE; BSP_COM_Init(COM1,&lpuart); printf("com1 A2 A3"); 在while(1)里加入打印ADC的值; printf("ADC =%d",hADCxConvertedData_newRange); /* Update current mode */ currMode = modeString[modeIndex].label; 下载程序测试如下,每按下一次user key,打印一次ADC的值; 此内容由EEWORLD论坛网友viphotman原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2019-09-29
  • 回复了主题帖: “赞一赞我的国”:集合啦,侃侃好用的国产单片机

    本帖最后由 viphotman 于 2019-9-29 14:56 编辑 第一次使用的国产单片机还是在学校时,实验室里有块STC89C52 DIP40,然后看着教程,一步一步的学习,点亮一个LED,独立按键……;这单片机由于是51芯片,资源多,学习入门好;但后来出学校后,这个芯片反而没有用过了; 第一个工作后使用的单片机是松瀚的2501, OTP芯片,资源小,要仿真板上写好程序再下载到板上验证,经常把引脚焊脱了;后来双用过义隆的EM78P15X ;这些单片机都是资源小,OTP,价格有竞争力; 后来还用过新唐的51核的  814,,资源功能是越来越多,再后来,就用一些国外的MCU 了,PIC ATMEL ; 沁恒的CH549也在论坛的活动下试用了一把,在USB UART接口方面 ,这个芯片是易用; 最近,用上国产的一个新的M4芯片AT32F403;同类芯片上,速度 RAM和一些功能上有些优势,当然价格上也是; 这以上就是接触单片机以来,用过的国产单片机;在这里也祝祖国的半导体行业越来越强,祖国越来越强

  • 2019-09-27
  • 回复了主题帖: 我的单片机开发之路(二)

    你这单片机还是可以用C写的,不错了

  • 发表了日志: 【DFRobot无线通信模块】-Gravity A6 GPRS模块入手检测

  • 发表了主题帖: 【DFRobot无线通信模块】-Gravity A6 GPRS模块入手检测

    本帖最后由 viphotman 于 2019-9-27 18:33 编辑 【DFRobot无线通信模块】测评 DFRobot无线通信模块: http://www.ib939.com/18/goods-1442.html 资源: A6模块资料   一 靓照(正反面)  可以看到有一个UART接口,可以直接通过USB转串口来调试,减少调试时间; SIM 卡座,太大,本来想试下GPRS功能的,这会儿硬是没找到合适的卡;  二 上手测试   1 上电灯怎么不亮,通过115200的波特率发了个数据,灯才亮;   2 但是,没有回应;难道是坏的;但灯还是在闪;   测试供电5V ,正常;   TX RT 交换,还是没有返回数据; 3 换个USB转串口,还真有反应了,插入后,按复位就收到值,上一个是没有的;,难道是上一个 USB 转串口质量差点……;   4 再换USB 转串口,正好有几个不同的;  测试下图的USB转串口工具,只有一个是正常的; 三 疑问   四个USB转串口,有两个是FTDI的,一个可以,一个不行,电源电压也都是4.9几伏,正常,   不应该是质量不好吧,那是什么问题呢?   请教下网友们; 此内容由EEWORLD论坛网友viphotman原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 加入了学习《形象地介绍:什么是傅里叶变换》,观看 形象地介绍:什么是傅里叶变换

  • 2019-09-26
  • 发表了主题帖: NUCLEO_G431RB测评-UART疑问

    本帖最后由 viphotman 于 2019-9-26 10:23 编辑 NUCLEO_G431RB测评 -UART 例子地址 STM32Cube_FW_G4_V1.0.0\Projects\NUCLEO-G431RB\Examples\UART\UART_Printf   上次用UART时,发现了个问题,就是打印单个"a"或是“1” 时,数据正确出来, 但是打印“12345”时,出来就乱了;会出HEX; 31 32 B3 B4 35; 每隔2个数据,会在数据的高8位变为1(0x33->0xB3); 后来,我打印"P"(0x50),单个数据也错;图如下   1 波形如下;,测试单个脉冲频率113.6K 约等115200,波特率没错;   2 串口打印如下 ,HEX是0XD0 (11010000),但正确的应该是(0x50 (01010000)),高8位多了个1;     3 我想到是不是数据位数据有错,是7bit,不是8bit; 修改串口工具的数据位数后,发的数据正常了;   4 返回代码看,  hlpuart1.Init.WordLength = UART_WORDLENGTH_8B; 是写的8bit; #define UART_WORDLENGTH_8B                  0x00000000U  static void MX_LPUART1_UART_Init(void) { /* USER CODE BEGIN LPUART1_Init 0 */ /* USER CODE END LPUART1_Init 0 */ /* USER CODE BEGIN LPUART1_Init 1 */ /* USER CODE END LPUART1_Init 1 */ hlpuart1.Instance = LPUART1; hlpuart1.Init.BaudRate = 115200; hlpuart1.Init.WordLength = UART_WORDLENGTH_8B; hlpuart1.Init.StopBits = UART_STOPBITS_1; 看规格书里描述;8bit 是00,也没有错;   不知道其它测评的网友是个什么情况; 先发出来请教下;

  • 2019-09-24
  • 回复了主题帖: 【入选名单公布】DFRobot无线通信模块测评

    个人信息确认无误

  • 2019-09-23
  • 回复了主题帖: 请问锂电池的电压是由电池的长度决定的吗?

    哪听到的这个说法呀

  • 2019-09-20
  • 回复了主题帖: 有奖调查——We want you!好的参考设计网站什么样?

    一般就用百度,听说google好,但也用不了; 再就是各个芯片原厂的网站——权威;  

  • 回复了主题帖: 转——你没见过的电子元器件的另一面!

    很精彩,要是有没切的原图和中文翻译就好了!

  • 回复了主题帖: 【颁奖】沁恒福利到,评估板诚 “芯”送!

    确认下,就是手上的EVB板子和USB转串口是吧?

  • 2019-09-18
  • 发表了主题帖: NUCLEO_G431RB测评 入手G431

    本帖最后由 viphotman 于 2019-9-18 11:04 编辑 ST NUCLEO_G431RB测评 一 硬件       1 手机拍摄实物图,主要看到两个IC ,STM32F723 这个是STLINK-V3E上用于给STM32G431下载程序或仿真;       2 详细描述 下图 虽然是G474的图,但和G431结构一样;       3 连接USB到电脑后,电脑会自动安装驱动,安装后如下:     二 开发环境     系统:VirtualBox 虚拟机下windows xp 32bit 下安装keil 5.15 (经测试高版安装不了);     编译:keil 下安装pack :Keil.STM32G4xx_DFP.1.1.0.pack (keil 官方网站下载);     ST 下载:STM32CubeProgrammer (ST官方网站下载。这个是安装在主系统win7下);     代码生成:STM32CubeMX; 三 软件     G4 demo 例程 :STM32CubeG4_V1.1.0.zip (ST官方网站下载);  修改这个工程   STM32Cube_FW_G4_V1.0.0\Projects\NUCLEO-G431RB\Examples\UART\UART_Printf    这个工程没有KEIL 工程,先要用STM32CubeMX 生成MDK ARM工程;用软件打开上面目录下的   UART_Printf.ioc;将LED2也设置一下;点生成    生成的代码在keil中打开,  (由于我的代码生成在win7下,keil打开在虚拟机windows xp里,所生成的代码在有些文件上的路径有问题,需要修改一下)  如下两个地方:  最后修改完的代码while (1)里加入 LED2翻转和printf; 四 下载   硬件用USB连接PC,打开STM32CubeProgrammer ,ST LINK 连接上,加载要下载的HEX下载;   可用USB转串口看打印数据;LED灯也在闪; 五 总结   1 ST LINK V3 在虚拟机的驱动还没安装好,不能用keil直接下载,后续再测;   2 后续再测ADC部分;  

  • 2019-09-17
  • 回复了主题帖: 请问Keil Uvision5.26汉化版安装完后,DEVICE 管理中只有ARM没有51的器件是怎么...

    你可能下载错了,51要下C51而不是MDK,keil ARM 和51的编译器不一样,编辑器一样的;

  • 2019-09-16
  • 回复了主题帖: STM32的ADC使用DMA方式时数据被篡改

    本帖最后由 viphotman 于 2019-9-16 11:00 编辑 STM32F103的有没有试过;

  • 2019-09-09
  • 回复了主题帖: #测评名单公布#尝鲜体验ST NUCLEO_G431RB开发板

    个人信息确认无误 ,谢谢EE ST!

  • 2019-09-05
  • 加入了学习《物联网、汽车、AI 全覆盖 - 世平集团,恩智浦解决方案大秀场》,观看 NXP MK64 大树云 BTC 方案

  • 加入了学习《物联网、汽车、AI 全覆盖 - 世平集团,恩智浦解决方案大秀场》,观看 NXP BMS 应用方案

  • 2019-09-04
  • 回复了主题帖: ST各类传感器MCU驱动程序总资源包

    厉害!哪里来这么多资料,这些楼主都用过吗?

最近访客

< 1/5 >

统计信息

已有281人来访过

  • 芯币:737
  • 好友:2
  • 主题:20
  • 回复:180
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 永利游戏现金直营


现在还没有留言

12sb.com 新二娱乐网 588彩票网现金 捕游算法 杏彩娱乐官网手机app
188金宝博娱乐登陆 外围赌场 澳门威尼斯人娱乐登入 ds太阳城娱乐平台注册官方网 菲律宾申博娱乐城手机APP下载登入
飞5游戏 菲律宾申博在线官网开户登入 菲律宾网上娱乐场开户 太阳城游戏攻略现金网登入 pt周游列国登入
申博代理合作登入 真人视讯77msc 银河国际娱乐手机版登入 www.81138.com登入 双色球网上投注