TMS320F28377学习笔记——通过定时器触发ADC连续采样
时间:2019-09-17
本文章向大家介绍TMS320F28377学习笔记——通过定时器触发ADC连续采样,主要包括TMS320F28377学习笔记——通过定时器触发ADC连续采样使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
作为TI的C2000系列最新产品的28377S(D),ADC模块是其核心的信号采集功能。28377的ADC是一个逐次逼近型(SAR)ADC,可选择分辨率为16位或12位。具体ADC特性如下图的数据手册所示:
这次学习,我采用Timer定时器作为触发源来触发ADC在SOC0上的的连续转换。由上图可以看到,ADC支持的触发类型有:
- 软件触发
- 所有的EPWM-ADCSOCA或B
- GPIO XINT2
- CPU 定时器0/1/2(每个C28x内核)
- ADCINT1/2
所以,通过CPU的定时器来触发采样是可行的。下面来看ADC的模块框图:
我们通过Timer触发ADC的SOC0转换序列对ADCIN0进行持续采样:采样方式为单端12位采样。
接下来需要配置ADC的SOC采样序列,包括采样窗时间,转换的通道选择,触发源选择等:
下面附上程序部分:
1 /*配置ADC的转换模式、中断及触发源*/ 2 void ConfigureADC(void) 3 { 4 EALLOW; 5 AdcaRegs.ADCCTL2.bit.PRESCALE = 6; //ADC时钟预分频:200M/4=50MHz 6 AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, 7 ADC_SIGNALMODE_SINGLE); //配置ADCA为12位转换精度,单端模式 8 AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1; //ADC中断脉冲位置发生在在转换结束时,在ADC结果锁存到结果寄存器之前的一个周期 9 AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; //内核中的所有模拟电路都通电 10 DELAY_US(1000); //delay for 1ms to allow ADC time to power up 11 EDIS; 12 13 Uint16 acqps; 14 15 if(ADC_RESOLUTION_12BIT == AdcaRegs.ADCCTL2.bit.RESOLUTION) 16 { 17 acqps = 14; //12位单端模式下采样时间最快75ns,ACQPS>=14, 18 } 19 else //resolution is 16-bit 20 { 21 acqps = 63; //16位差分模式下采样时间最快320ns,ACQPS>=63 22 } 23 24 EALLOW; 25 AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0; //SOC0将转换ADCINA2 26 AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps; //设置采样窗时间 27 AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 2; //SOC0触发源选择为CPU1 Timer1 28 AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0; //EOC0触发ADCINT1 29 AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1; //ADCINT1中断使能 30 AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //ADCINT1中断标志位清零 31 EDIS; 32 }
可以看到,在ADCRESULT0寄存器中,程序正在持续采样中
原文地址:https://www.cnblogs.com/shengQiming/p/11531763.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用Pycharm和跳板机 连接内网服务器
- CVE-2020-1313漏洞分析与利用PoC
- Linux用户登录日志查询 # 1 utmp、wtmp、btmp文件
- 浏览器同域名请求的最大并发数限制
- HTTP Strict Transport Security实战详解
- 深夜学算法之SkipList:让链表飞
- 自研安全工具之网页全链接爬取
- 实战远程文件同步(Remote File Sync)
- nginx cache的玩法
- PHP共享内存详解 前言
- 为了--force-pivoting参数,我问候了sqlmap开发者
- flexible array柔性数组、不定长的数据结构Struct详解
- 如何优雅打印nginx header和body
- Go的CSP并发模型实现:M, P, G
- Golang依赖管理工具:glide从入门到精通使用