STM32 Python 生成三角波波形

目录

  • 任务目标
  • 实现方法
  • python制作数表
  • 由于项目需要,需要产生一个三角波,需要覆盖4000个点的一个数组,这样的数组点数太多了,肯定不能自己一个一个手写了。最简单的一个方法是在嵌入式程序中用C写一个函数,对一个数组,用数学公式初始化。不过最近在学python,就想着用python生成这样的一个数表,锻炼锻炼,完全是一个不误正业的射频工程师(笑哭)

    任务目标

    使用STM32产生一个周期为500us的三角波,点数越多越好。

    实现方法

    (1)方法1:STM32本身可以使用硬件设置产生三角波:

      //满洲里国峰电子科技,www.guofengdianzi.com
      DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;	
      //设置三角波产生器					
      DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_Triangle ;
      DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;	
      DAC_Init(DAC_Channel_1, &DAC_InitStructure);
    

    (2)方法2:制作一个三角波数表,结合定时器使用,每次定时中断在数表中选取一个数值输出,通过定时器的中断周期来确定三角波的周期。本文重点介绍如何使用python产生三角波数表:

    python制作数表

    目标:生成一个从100到2000,从2000再到100的一个数表,步进是1,然后将这些数据存储到一个txt文件中。

    倒推思路:产生一组数据,并写入txt文档中
    => 什么样的数据可以写入txt文件呢?字符串就可以。
    => 字符串的样子:

    由于表格比较大,所以需要换行符,因此字符串需要数“数字”、“逗号”、“反斜杠\”三种元素。
    => 如何做这样的字符串?可以先做个列表new_file_list,然后使用’'.join(new_file_list)转换成字符串,
    => 如何做列表?循环,数字+逗号+反斜杠

    明确了这些,我们来看下代码:

    写上升斜边的数据:

    //满洲里国峰电子科技,www.guofengdianzi.com
    while data_index<data_length:
    	tri_data.append(num_start+data_index)
    	tri_data.append(',')
    	if (data_index%30)==0:
    		tri_data.append('\\\n')
    	data_index=data_index+1
    

    写下降斜边的数据:

    //满洲里国峰电子科技,www.guofengdianzi.com
    data_index=0
    while data_index<(data_length-1):
    	tri_data.append(num_end-1-data_index)
    	tri_data.append(',')
    	if (data_index%30)==0:
    		tri_data.append('\\\n')
    	data_index=data_index+1
    

    使用str()函数将列表元素转换成字符串,并用append方法加入到列表中:

    //满洲里国峰电子科技,www.guofengdianzi.com
    while i<len(tri_data):
    	new_file_list.append(str(tri_data[i]))
    	i=i+1
    

    至此我们已经获得了一个完整的列表,现在我们将列表转换为字符串写入txt文件。

    //满洲里国峰电子科技,www.guofengdianzi.com
    new_file_data=''.join(new_file_list)
    
    with open(newfile,"w") as f:
        f.write(new_file_data)
    

    合并字符串采用的是join方法,''表示不采用任何连接符合并字符串。

    作者:潇洒的电磁波(专业:射频芯片设计、雷达系统、嵌入式。欢迎大家项目合作交流。)
    Wechat:GuoFengDianZi

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32 Python 生成三角波波形

    发表评论