[STM32F7] NUCLEO-F722ZE+ADC+DMA工程建立

[复制链接]
1098|3
 楼主| zhanzr21 发表于 2017-3-13 19:29 | 显示全部楼层 |阅读模式
说是要评测外设, 但是这板子上外设真心没有多少可评测的, 这里以内部ADC的使用来做个例子吧.
front1_block.jpg
没有以太网,板子显得很荒凉. 开始建立工程.
new_cube_prj.png
如果没有722的同学,可以将CubeMX升级一下子.
cubemx_rcc_config.png
时钟这么配置, 关于外部时钟, 可以参考我发的另外一个帖子, 简而言之, F7使用的是CBT6输出的8MHz的时钟信号.
cubemx_clock_tree_conf_216.png
跑到216M,也就是最高的频率.
adc1_3_channel.png
开三个通道, 一个是IN3也就是相当于Arduino接口那里的A0, 一个内部温度传感, 一个是内部基准.
adc1_in3_pa3_A0.jpg
AIN3是这个接口, 方便等会测试, 悬空的话1000mV左右
adc_3_channel_config.png
做3个Rank,SCAN方式扫描
adc_3_channel_dma.png
DMA打开,这里使用HalfWorld也成, 但是要跟你变量声明一致, 因为这个ADC最高也是12bit, 不超过半字.
cubemx_generate_prj.png
可以生成工程了.


 楼主| zhanzr21 发表于 2017-3-13 19:50 | 显示全部楼层
生成工程后, 很多人的MDK会报警, 因为722是个比较新的片, 要安装F7_2.9.0的DFP才行.
但是对于大多数人的MDK,要离线下载这个DFP.
这里下载:
http://www.keil.com/dd2/Pack/
keil_mdk_dfp_include_f722ze.png
700多M, 建议使用GUI工具比如迅雷下载.
import_local_dfp.png
导入刚刚下载的dfp之后就能选择正确的设备了.
keil_right_device.png
接下来配置一下子调试输出, 这里使用ITM来输出, 免去接串口的麻烦.
点这个:
rte_button.png
rte_output_config_ITM.png
把STDOUT定位到ITM上去,
[这里要修改代码,修改主要代码:
  1.   /* Infinite loop */
  2.   /* USER CODE BEGIN WHILE */
  3.   while (1)
  4.   {                               
  5.                 HAL_GPIO_TogglePin(LD1_GPIO_Port, LD1_Pin);
  6.                 HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
  7.                 HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
  8.                                                                
  9.                 HAL_Delay(1000);
  10.                
  11.     JTemp = ((((g_adcBuf[0] * VREF)/MAX_CONVERTED_VALUE) - VSENS_AT_AMBIENT_TEMP) * 10 / AVG_SLOPE) + AMBIENT_TEMP;
  12.                 VRef = (g_adcBuf[1] * VREF)/(MAX_CONVERTED_VALUE+1);
  13.                 AIn3 = (g_adcBuf[2] * VREF)/(MAX_CONVERTED_VALUE+1);
  14.                 printf("Sample %u %u %u [%d'C] [%u mV] [%u mV] _ %u\n",
  15.                 g_adcBuf[0], g_adcBuf[1], g_adcBuf[2],
  16.                 JTemp, VRef, AIn3,
  17.                 HAL_GetTick()
  18.                 );
  19.                
  20.   /* USER CODE END WHILE */
全部代码请参考附件.
]
编译, 下载, 打开ST Link Utility,点开SWO Viewer:
stlink_utility_swo_viewer.png
如不出意料, 将会有这样的输出:
second_prog_swo_output.png
第一个通道:片上温度, 第二个通道:内部参考, 第三个通道: A0(AIN3)
温度的计算请参考工程中的公式, 一般误差为正负1度, 最高误差正负2度, 集成的温度传感器中算是比较准的了.
内部参考电压标称是1.21V, 测量值为1.205到1.206漂, 也算是比较准确的.
internal_ref_voltage.png
分享就此结束,附件是整个工程(含Cube工程)以供参考.
f722_t1_adc_test.zip (1.1 MB, 下载次数: 6)

whtwhtw 发表于 2017-3-14 11:39 | 显示全部楼层
支持一下
队长shiwo 发表于 2017-7-26 09:20 | 显示全部楼层
支持支持  感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:每天都進步

91

主题

1017

帖子

34

粉丝
快速回复 在线客服 返回列表 返回顶部