社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
中文
En
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
专业技术中心
›
TI技术论坛
›
微控制器 MCU
›
TMS320F28335有关ADC详解
返回列表
发新帖
回复
阅
2282
|
回
0
Jacktang
当前离线
五彩晶圆(高级)
最后登录
2025-2-17
在线时间
630 小时
威望
7408分
芯积分
6782分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
1
Jacktang
6887
帖子
0
TA的资源
五彩晶圆(高级)
+ 好友
私信
楼主
发表于2018-8-13 22:06
只看该作者
TMS320F28335有关ADC详解
[复制链接]
TMS320F28335内部包含12位AD转换器,其功能有:
具有内置(采样保持)S/H的12位ADC内核
模拟输入:0.0V至3.0V(高于3.0V的电压产生满刻度转换结果)。
快速转换率:在25MHzADC时钟12.5MSPS上时高达80ns
16个专用ADC通道。
每次采样/保持都有复用的8通道
自动定序功能在单次会话中可提供多达16次“自动转换”。可将每次转换编程为选择16个输入信道中的任何一个。
序列发生器可运行为2个独立的8态序列发生器,或作为1个较大的16态序列发生器(即2个级联的8态序列发生器)。
用于存储转换值的16个结果寄存器(可分别寻址)
– 输入模拟电压的数值源自:
当input<0时:digital value =0;
当0
当input>3.0时:digital value =4095;
作为转换开始(SOC)序列源的多个触发器
– S/W-软件立即启动
– ePWMM转换开始
– XINT2ADC转换开始
灵活的中断控制允许每个序列结束(EOS) 或每个其它EOS上的中断请求。
序列发生器可运行于“启/停”模式,从而实现多个“时序触发器”同步转换。
SOCA和SOCB触发器可独立运行在双序列发生器模式中。
采样保持(S/H)采集时间窗口具有独立的预分频控制。
要获得指定的ADC精度,正确的电路板布局非常关键。为尽可能达到最佳效果,引入ADCIN引脚的走线不应太靠近数字信号通道。这是为了最大程度地减少数字线路上因ADC输入耦合而产生的开关噪声。而且,适当的隔离技术必须被用来将数字电源从ADC模块电源引脚(VDD1A18,VDD2A18,VDDA2,VDDAIO)上隔离。
ADC未被使用,ADC连接
建议保持针对模拟电源引脚的连接,即便在ADC未被使用时也是如此。下面总结了如果ADC未在应用中使用,应该如何连接ADC引脚:
? VDD1A18/VDD2A18-连接至VDD
? VDDA2,VDDAIO-连接至VDDIO
? VSS1AGND/VSS2AGND,VSSA2,VSSAIO-连接至VSS
? ADCLO-连接至VSS
? ADCREFIN-连接至VSS
? ADCREFP/ADCREFM-连接一个100nF电容器至VSS
? ADCRESEXT-连接一个20k?电阻器(非常松散的耐受)至VSS。
? ADCINAn,ADCINBn-连接至VSS
当ADC未被使用时,为了达到节能的目的,请确保到ADC模块的时钟未被打开。
当在一个应用中使用ADC模块时,未使用的ADC输入引脚应被连接至模拟接地(VSS1AGND/VSS2AGND)
ADC头文件与寄存器对应解读:
struct ADCTRL1_BITS { // bits description
Uint16 rsvd1:4; // 3:0 reserved
Uint16 SEQ_CASC:1; // 4 Cascaded sequencer mode 级联序列模式
Uint16 SEQ_OVRD:1; // 5 Sequencer override 序列发生器覆盖
Uint16 CONT_RUN:1; // 6 Continuous run 连续运行模式
Uint16 CPS:1; // 7 ADC core clock pre-scalar ADC核心时钟分频
Uint16 ACQ_PS:4; // 11:8 Acquisition window size采集窗口大小
Uint16 SUSMOD:2; // 13:12 Emulation suspend mode仿真挂起模式
Uint16 RESET:1; // 14 ADC reset ADC复位
Uint16 rsvd2:1; // 15 reserved 保留
};
下面的联合体主要是为了解决对这个寄存器的控制,可以是整体赋值液可以是一位一位的赋值。
union ADCTRL1_REG {
Uint16 all;
struct ADCTRL1_BITS bit;
};
struct ADCTRL2_BITS { // bits description
Uint16 EPWM_SOCB_SEQ2:1; // 0 EPWM compare B SOC mask for SEQ2 增强PWM比较器B作为SEQ2的启动转换标志
Uint16 rsvd1:1; // 1 reserved
Uint16 INT_MOD_SEQ2:1; // 2 SEQ2 Interrupt mode SEQ2终端模式
Uint16 INT_ENA_SEQ2:1; // 3 SEQ2 Interrupt enable SEQ2中断使能
Uint16 rsvd2:1; // 4 reserved
Uint16 SOC_SEQ2:1; // 5 Start of conversion for SEQ2 启动SEQ2转换
Uint16 RST_SEQ2:1; // 6 Reset SEQ2 SEQ2复位
Uint16 EXT_SOC_SEQ1:1; // 7 External start of conversion for SEQ1 序列1的外部转换启动
Uint16 EPWM_SOCA_SEQ1:1; // 8 EPWM compare B SOC mask for SEQ1
Uint16 rsvd3:1; // 9 reserved
Uint16 INT_MOD_SEQ1:1; // 10 SEQ1 Interrupt mode
Uint16 INT_ENA_SEQ1:1; // 11 SEQ1 Interrupt enable
Uint16 rsvd4:1; // 12 reserved
Uint16 SOC_SEQ1:1; // 13 Start of conversion trigger for SEQ1
Uint16 RST_SEQ1:1; // 14 Restart sequencer 1
Uint16 EPWM_SOCB_SEQ:1; // 15 EPWM compare B SOC enable
};
struct ADCASEQSR_BITS { // bits description
Uint16 SEQ1_STATE:4; // 3:0 SEQ1 state 序列1的状态
Uint16 SEQ2_STATE:3; // 6:4 SEQ2 state 序列2的状态
Uint16 rsvd1:1; // 7 reserved
Uint16 SEQ_CNTR:4; // 11:8 Sequencing counter status 序列计数器状态
Uint16 rsvd2:4; // 15:12 reserved
};
ADC最大转换信道数寄存器
struct ADCMAXCONV_BITS { // bits description
Uint16 MAX_CONV1:4; // 3:0 Max number of conversions 序列1最大转换通道数
Uint16 MAX_CONV2:3; // 6:4 Max number of conversions 序列2最大转换通道数
Uint16 rsvd1:9; // 15:7 reserved
};
ADC信道选择排序控制寄存器
SEQ1只能使用ADCCHSELSEQ1和ADCCHSELSEQ2;AEQ2只能使用ADCCHSELSEQ3和ADCCHSELSEQ4
struct ADCCHSELSEQ1_BITS { // bits description
Uint16 CONV00:4; // 3:0 Conversion selection 00
Uint16 CONV01:4; // 7:4 Conversion selection 01
Uint16 CONV02:4; // 11:8 Conversion selection 02
Uint16 CONV03:4; // 15:12 Conversion selection 03
};
struct ADCCHSELSEQ2_BITS { // bits description
Uint16 CONV04:4; // 3:0 Conversion selection 04
Uint16 CONV05:4; // 7:4 Conversion selection 05
Uint16 CONV06:4; // 11:8 Conversion selection 06
Uint16 CONV07:4; // 15:12 Conversion selection 07
};
struct ADCCHSELSEQ3_BITS { // bits description
Uint16 CONV08:4; // 3:0 Conversion selection 08
Uint16 CONV09:4; // 7:4 Conversion selection 09
Uint16 CONV10:4; // 11:8 Conversion selection 10
Uint16 CONV11:4; // 15:12 Conversion selection 11
};
struct ADCCHSELSEQ4_BITS { // bits description
Uint16 CONV12:4; // 3:0 Conversion selection 12
Uint16 CONV13:4; // 7:4 Conversion selection 13
Uint16 CONV14:4; // 11:8 Conversion selection 14
Uint16 CONV15:4; // 15:12 Conversion selection 15
};
控制寄存器3
struct ADCTRL3_BITS { // bits description
Uint16 SMODE_SEL:1; // 0 Sampling mode select 采样模式选择
Uint16 ADCCLKPS:4; // 4:1 ADC core clock divider ADC时钟分频器
Uint16 ADCPWDN:1; // 5 ADC powerdown ADC断电???
Uint16 ADCBGRFDN:2; // 7:6 ADC bandgap/ref power down ADC参考/带隙断电 ???
Uint16 rsvd1:8; // 15:8 reserved
};
状态寄存器
struct ADCST_BITS { // bits description
Uint16 INT_SEQ1:1; // 0 SEQ1 Interrupt flag 序列1中断标志
Uint16 INT_SEQ2:1; // 1 SEQ2 Interrupt flag 序列2中断标志
Uint16 SEQ1_BSY:1; // 2 SEQ1 busy status 序列1忙标志
Uint16 SEQ2_BSY:1; // 3 SEQ2 busy status 序列2忙标志
Uint16 INT_SEQ1_CLR:1; // 4 SEQ1 Interrupt clear 清除序列1中断标志
Uint16 INT_SEQ2_CLR:1; // 5 SEQ2 Interrupt clear 清除序列2中断标志
Uint16 EOS_BUF1:1; // 6 End of sequence buffer1 序列缓冲器1结束
Uint16 EOS_BUF2:1; // 7 End of sequence buffer2
Uint16 rsvd1:8; // 15:8 reserved
};
struct ADCREFSEL_BITS { // bits description
Uint16 rsvd1:14; // 13:0 reserved
Uint16 REF_SEL:2; // 15:14 Reference select 参考选择???
};
struct ADCOFFTRIM_BITS{ // bits description
int16 OFFSET_TRIM:9; // 8:0 Offset Trim 偏移微调???
Uint16 rsvd1:7; // 15:9 reserved
};
ADC寄存器
struct ADC_REGS {
union ADCTRL1_REG ADCTRL1; // ADC Control 1
union ADCTRL2_REG ADCTRL2; // ADC Control 2
union ADCMAXCONV_REG ADCMAXCONV; // Max conversions
union ADCCHSELSEQ1_REG ADCCHSELSEQ1; // Channel select sequencing control 1
union ADCCHSELSEQ2_REG ADCCHSELSEQ2; // Channel select sequencing control 2
union ADCCHSELSEQ3_REG ADCCHSELSEQ3; // Channel select sequencing control 3
union ADCCHSELSEQ4_REG ADCCHSELSEQ4; // Channel select sequencing control 4
union ADCASEQSR_REG ADCASEQSR; // Autosequence status register
Uint16 ADCRESULT0; // Conversion Result Buffer 0
Uint16 ADCRESULT1; // Conversion Result Buffer 1
Uint16 ADCRESULT2; // Conversion Result Buffer 2
Uint16 ADCRESULT3; // Conversion Result Buffer 3
Uint16 ADCRESULT4; // Conversion Result Buffer 4
Uint16 ADCRESULT5; // Conversion Result Buffer 5
Uint16 ADCRESULT6; // Conversion Result Buffer 6
Uint16 ADCRESULT7; // Conversion Result Buffer 7
Uint16 ADCRESULT8; // Conversion Result Buffer 8
Uint16 ADCRESULT9; // Conversion Result Buffer 9
Uint16 ADCRESULT10; // Conversion Result Buffer 10
Uint16 ADCRESULT11; // Conversion Result Buffer 11
Uint16 ADCRESULT12; // Conversion Result Buffer 12
Uint16 ADCRESULT13; // Conversion Result Buffer 13
Uint16 ADCRESULT14; // Conversion Result Buffer 14
Uint16 ADCRESULT15; // Conversion Result Buffer 15
union ADCTRL3_REG ADCTRL3; // ADC Control 3
union ADCST_REG ADCST; // ADC Status Register
Uint16 rsvd1;
Uint16 rsvd2;
union ADCREFSEL_REG ADCREFSEL; // Reference Select Register
union ADCOFFTRIM_REG ADCOFFTRIM; // Offset Trim Register
};
struct ADC_RESULT_MIRROR_REGS
{
Uint16 ADCRESULT0; // Conversion Result Buffer 0
Uint16 ADCRESULT1; // Conversion Result Buffer 1
Uint16 ADCRESULT2; // Conversion Result Buffer 2
Uint16 ADCRESULT3; // Conversion Result Buffer 3
Uint16 ADCRESULT4; // Conversion Result Buffer 4
Uint16 ADCRESULT5; // Conversion Result Buffer 5
Uint16 ADCRESULT6; // Conversion Result Buffer 6
Uint16 ADCRESULT7; // Conversion Result Buffer 7
Uint16 ADCRESULT8; // Conversion Result Buffer 8
Uint16 ADCRESULT9; // Conversion Result Buffer 9
Uint16 ADCRESULT10; // Conversion Result Buffer 10
Uint16 ADCRESULT11; // Conversion Result Buffer 11
Uint16 ADCRESULT12; // Conversion Result Buffer 12
Uint16 ADCRESULT13; // Conversion Result Buffer 13
Uint16 ADCRESULT14; // Conversion Result Buffer 14
Uint16 ADCRESULT15; // Conversion Result Buffer 15
};
ADC_Cal()常规步骤:
第一步:这个是TI公司提供的文件
.def _ADC_cal ;定义代码段名称
.asg "0x711C", ADCREFSEL_LOC ;ADCREFSEL_LOC 是 ADC Reference Select Register, 地址0x711C
.sect".adc_cal"
_ADC_cal
MOVW DP, #ADCREFSEL_LOC >> 6 ;此时 DP = 0x7100
MOV @28, #0xAAAA ;地址 : 0x7100 + 28
MOV @29, #0xBBBB ;地址 : 0x7100 + 29
LRETR
第二步:为 ADC_Cal() 添加命令文件
MEMORY
{
PAGE 0 :
...
ADC_CAL : origin = 0x380080, length = 0x000009
...
}
SECTIONS
{
...
.adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD
...
}
第三步:在使用ADC前要声明ADC_Cal(),并且在使用ADC_Cal()之前要使能ADC高速时钟。
extern void ADC_cal(void);
…
EALLOW; //允许对受保护的寄存器进行操作
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; //使能时钟
ADC_cal();
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 0; //关闭时钟
EDIS; //禁止对受保护的寄存器进行操作
ADC转换软件步骤:
初始化DSP系统;
设置PIE 中断矢量表,
初始化ADC模块;
将ADC中断的入口地址装入PIE 中断矢量表中,开中断;
软件启动ADC转换;
等待ADC中断;
在ADC中断中读取ADC转换结果,软件启动下一次ADC中断。
此帖出自
微控制器 MCU论坛
点赞
关注
(0)
TI培训
回复
分享
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
举报
提升卡
变色卡
千斤顶
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
活动
更多>>
有奖直播报名 |TI全新推出极具性价比的通用型处理器AM62L
【NI有奖直播报名】当DeepSeek遇到LabVIEW
2025玄铁RISC-V生态大会 火热报名中,参会赢好礼
Microchip 直播|利用motorBench
®
开发套件高效开发电机磁场定向控制方案
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
福禄克有奖直播:高精度测温赋能电子制造
有奖直播 | TI 助力机器人电机控制系统设计
DigiKey 应用探索站 | 无线技术盛宴第二趴
开源项目
更多>>
闪闪发光的石机
使用 Richtek Technology Corporation 的 RT8208E 的参考设计
BTS5215L智能高端电源开关典型应用电路
L7806A 0.5 至 10 V 输出稳压器的典型应用
LT6658AIMSE-2.5 递归参考应用的典型应用电路(VOUT1 为 VIN 和 VIN2 供电)
具有 400kHz 外部同步降压转换器的 LTC3646IMSE-1 12V 至 1.8V 输出的典型应用电路
带有 ICE2PCSxx 的升压型 CCM PFC 设计指南
OM13080,用于 ARM Cortex-M 系列 MCU 的 LPCXpresso 1125 开发板
REF194 低压差精密电流源的典型应用电路
使用 MCP19114 SEPIC LED 驱动器的 DC/DC LED 驱动器系统
随便看看
《奔跑吧Linux内核2:调试与案例分析》+内核系列方面知识、内核调试与性能优化
Linux内核调试与性能优化Linux作为一个开源的操作系统,被广泛应用于各种场景。对于Linux内核的开发者和系统管理员来说,掌握内核调试和性能优化的技巧是至关重要的。[attach]888246[/attach]内核开发和驱动编写是一项复杂且需要高度精确性的任务。为了确保代 ...
这是什么波形,如何检测这个波形
【言必信】电源滤波器对不同波形电源输入的滤波效果探究
CeSeekDatabaseEx
【EEworld原创教程讨论】IAR
MSP430F149
compact framework 如何卸载assembly
430单片机 Flash 操作一学就会(附源代码及调试过程)
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
虚拟现实技术
扩散硅变送器
阴极性能曲线
红外线接收器
s8050三极管
环形拓扑
有效电压
pH传感器
分布式
EPROM
相关文章
更多>>
解密超市供应链:智能追踪如何重塑食品行业
编译自瑞萨电子 你是否曾想过,当你穿梭在超市琳琅满目的货架间,拿起一件商品时,背后的供应链正经历着怎样的挑战?深入超市的每一个角落,便能瞥见供应链中隐藏的问题,这正是英国公司 Sensize 共
台积电2nm、Intel 18A工艺首次对比:一个更密、一个更快
2月14日消息,半导体研究机构TechInsights、SemiWiki公布了台积电N2 2nm级别、Intel 18A 1.8nm级别两大尖端工艺的诸多细节,并进行了正面对比,发现各有优势。 但需
消息称Arm寻求从客户中招募高管,参与芯片设计工作
2 月 14 日消息,据路透社援引知情人士及文件消息称,Arm 正加快向芯片业务扩展的步伐,不仅从客户公司挖掘人才,还在市场上直接与客户展开竞争,争取芯片订单。 Arm 长期以来一直为苹果和英伟
消息称苹果仍在与百度合作,在中国开发AI技术用于iPhone
消息称 AMD 考虑向三星下达 EPYC 霄龙处理器 4 纳米 IOD 芯片代工订单
宇树科技“福虎生威”四足机器人外观专利获授权
消息称三星电子推动西安工厂闪存工艺进一步升级:年内建成 V9 NAND 产线
Microchip CEO解释九大改革的新进展
特斯拉 FSD 进入墨西哥市场,预计第一季度面向欧洲和中国推出
半导体设备巨头泛林签署备忘录,拟在印度卡纳塔克邦投资 1000 亿卢比
新帖速递
STM32和无源蜂鸣器播放声音的问题
车规级AECQ200介绍,混合铝电解电容器的选择
嵌入式教程_DSP技术_DSP实验箱操作教程:2-28 搭建轻量级WEB服务器实验
OPA847IDBVR运放器国产替代
AG32VF407测试UART
【得捷电子Follow Me第二期】第一章 收到货物的分享
请问这个红外接收头是什么型号?能用哪个型号代替?谢谢
出售全新未拆封ZYNQ 7Z020 FPGA核心板
用在锂电池供电的水表设置上的LORA模块,当有100块水表集中安装在一个楼道内时,节能
请问一下,当某个端口被设置为 RX0后,这个端口的输入输出方向还有必要设置吗
今年怎么这么难,比疫情时还难,三十了面临失业好迷茫
请教稳压管测试问题
【小华HC32F448测评】关于小华半导体的UART中断发送和PRINTF构造和重定向
【BIGTREETECH PI开发板】 HDMI输出测试
【BIGTREETECH PI开发板】+08.音频测试(zmj)
福禄克有奖直播:高精度测温赋能电子制造 报名中!
直播时间:2025年2月28日(周五)上午10:00
直播主题:高精度测温赋能电子制造
小伙伴们儿快来报名直播吧~好礼等你拿!
查看 »
有奖直播 | TI 助力机器人电机控制系统设计
直播时间:2月27日(周四)上午10:00
活动奖励:家具壶、保温杯、充电线
查看 »
有奖直播:ADI 超低功耗 MCU MAX326xx 系列介绍
直播时间:3月20日(周四) 上午10:00
活动奖励:双肩包、充电宝、小夜灯
查看 »
【回帖赢京东卡】无线技术盛宴第二趴
【活动时间】即日起—2025年2月28日
【活动好礼】30元京东卡
查看 »
DigiKey 应用探索站 | 无线技术盛宴第二趴
当月好物、热门无线技术资源、特色活动、DigiKey在线实用工具,干货多多~
查看 »
开发板申请:拥有 AI 加持的 STM32N6570-DK 免费试用 !
申请时间:即日起-3月2日
查看 »
安世半导体智能工业应用探索站,闯关赢好礼!
点击页面内“开始探索”按钮,填写并提交表单;
请根据序号依次完成3个安世半导体智能工业应用的探索,并根据给出的资料完成共计9题(每个应用3题),答对5题以上的玩家即可获得抽奖资格;
每人仅有一次参与答题的机会,请慎重作答,活动结束后,我们将抽取30位玩家赠送礼品。
查看 »
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
直播主题:多相降压电源控制技术的发展与探讨
直播时间:2025年2月25日(星期二)上午10:30-11:30
快来报名!
查看 »
答题赢好礼,PI电源小课堂第3期来啦!
本期内容:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
活动时间:即日起-2月28日
看视频答题即可赢取京东卡!
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
关闭
站长推荐
1
/10
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
边缘AI
嵌入式系统
单片机
国产芯片交流
电机控制
FPGA/CPLD
模拟电子
电源技术
无线连接
传感器
PCB设计
综合技术交流
下载中心专版
大学堂专版
测评中心专版
行业应用
汽车电子
机器人开发
工业自动化与控制
能源基础设施
医疗电子
消费电子
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛