你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

读书感悟-3.学习下野火F103霸道里的DAC部分

[复制链接]
提笔画夕游 发布时间:2018-12-27 18:46
本帖最后由 chrisrh 于 2018-12-27 18:48 编辑

在读书学32之余,再学下Python。按照霸道书中的DAC章节,比葫芦画瓢
用的电脑是win7-64,所以装了较新的python-3.7.2-amd64,下载地址:http://pypi.org/
接着同意同意···装在了C盘里···我的安装目录是:
C:\Users\Administrator\AppData\Local\Programs\Python\Python37


安装完后,运行->开始菜单->Python3.7->IDLE,打开可以使用Python···
1.jpg




接下来安装外部库:
按照书中介绍,需要安装Matplotlib, a 2D plotting library.
在安装Matplotlib库之前,需先安装依赖库:
Requires numpy, dateutil, pytz, pyparsing, kiwisolver, cycler, setuptools, and optionally pillow, pycairo, tornado, wxpython, pyside, pyqt4, ghostscript, miktex, ffmpeg, mencoder, avconv, or imagemagick.


所以,安装了numoy、scipy、dateutil、pytz等几个库,
库可在这里找http://pypi.org/
也可以在这http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib
下载所需的库。



                                       安装whl文件

电脑win7-64,所以我下的全是win_amd64结尾的


将下载的库复制到安装目录下的C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts里


接着开始菜单->键入cmd,


进入到安装目录下    cd \Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts


进行升级                 python -m pip install -U pip setuptools


执行命令                 pip install wheel


依次安装numpy、scipy、matplotlib等的whl文件


安装numpy的whl:
在Scripts目录下,运行pip命令      pip install C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts\numpy-1.16.0rc1+mkl-cp37-cp37m-win_amd64.whl
等待successfully installed xxx


安装scipy的whl:
在Scripts目录下,运行pip命令      pip install C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts\scipy-1.2.0-cp37-cp37m-win_amd64.whl
等待successfully installed xxx


安装matplotlib的whl文件:
在Scripts目录下,运行pip命令      pip install C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts\matplotlib-3.0.2-cp37-cp37m-win_amd64.whl
等待successfully installed xxx
依此安装所需的库


安装完成后,查看已经安装的whl用     python -m pip list
QQ截图20181227135744.jpg




在IDLE里新建一个file运行:
import matplotlib.pyplot as plt
plt.plot([0,2,2])  
plt.show()  

2.jpg




接下来敲了一下书中的代码,初学不精,犯了一个错误,Python是以缩进来界定范围的,同样的代码,就是一堆error···
  1. #! python3
  2. #coding=utf-8

  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. import math

  6. #修改本变量可以更改点数,如16、32、64、128等
  7. POINT_NUM = 32

  8. pi = math.pi

  9. #一个周期 POINT_NUM 个点
  10. n = np.linspace(0,2*pi,POINT_NUM)

  11. #计算POINT_NUM个点的正弦值
  12. a = map(math.cos,n)

  13. r =[]
  14. for i in a:
  15.     #调整幅值至在0~1区间
  16.     i+=1      
  17.    
  18.     #按3.3V电压调整幅值
  19.     i*= 3.3/2   

  20.     #求取dac数值,12位dac LSB = 3.3V/2**12
  21.     ri = round(i*2**12/3.3)

  22.     #检查参数
  23.     if ri >= 4095:
  24.          ri = 4095

  25.     #得到dac数值序列
  26.     r.append( ri )

  27. print(list(map(int,r)))

  28. #写入序列到文件
  29. with open("py_dac_sinWav.c",'w',encoding= 'gb2312') as f:
  30.     print(list(map(int,r)),file= f)

  31. #绘图
  32. plt.plot(n,r,"-o")
  33. plt.show()
复制代码
需要多加注意空格,注意缩进···
10.jpg


生成一个cos余弦波形图
4.jpg


运行后生成的py_dac_sinWav.c和里面的数据,将数据复制到程序中使用
6.jpg


书中大多都是用DMA传输的数据,以后得好好的练练DMA的使用。
DAC也是用DMA写的,很棒。
7.jpg

DAC输出用的是PA4、PA5,没有找到ZET6的板,引脚兼容,就先用VCT6了
9.jpg

烧到板子里面,用示波器查看,把采样调高点,还是能看到32点波形的构成的。
8.jpg

不断学习代码,学习思想ing···
收藏 评论5 发布时间:2018-12-27 18:46

举报

5个回答
disheng4688 回答时间:2018-12-28 08:53:54
问一个问题,为什么下载器插在示波器的USB口上。
BG4RFF 回答时间:2018-12-28 09:13:47
disheng4688 发表于 2018-12-28 08:53
问一个问题,为什么下载器插在示波器的USB口上。

那是供电用的
提笔画夕游 回答时间:2018-12-28 13:14:06
jeffhe1 回答时间:2018-12-28 13:41:38
真是厲害
STMCU-管管 回答时间:2018-12-29 14:39:10
支持支持

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版