当前位置: 首页 > news >正文

企业门户网站建设论文广告优化师工作内容

企业门户网站建设论文,广告优化师工作内容,有了域名自己电脑怎么做网站,南宁做网约车司机要求前言 DSP各种模块的使用,基本上就是 GPIO复用配置、相关控制寄存器的配置、中断的配置。本文主要记录本人对ADC模块的学习笔记。TMS320F28377D上面有24路ADC专用IO,这意味着不需要进行GPIO复用配置。 只需要考虑相关控制寄存器和中断的配置。看代码请直…

前言

DSP各种模块的使用,基本上就是 GPIO复用配置、相关控制寄存器的配置、中断的配置。本文主要记录本人对ADC模块的学习笔记。TMS320F28377D上面有24路ADC专用IO,这意味着不需要进行GPIO复用配置。 只需要考虑相关控制寄存器和中断的配置。看代码请直接跳到最后。

正文

单端模式/差分模式

在放代码之前,先谈谈TMS320F28377D的ADC里面非常容易搞蒙的一点:单端模式/差分模式

根据TMS320F28377D 的reference的介绍(pg:1554),ADC模块有以下特性 :

差分信号转换 仅限16位模式

单端信号转换 仅限12位模式

单端的话,就能有16通道(12位)|  差分的话,就能有8通道(16位)。

很多人都对差分模式下DSP的代码应该如何编写还不够理解,相信看了下面这个帖子会有启发。TMS320F28388D: 16位差分采样 - C2000™︎ 微控制器论坛 - C2000 微控制器 - E2E™ 设计支持 (ti.com)

我怕帖子被删除了,还是复述点关键的东西吧。 下表不仅给出了单端/差分在16位模式下的解算方式,也间接说明了单端也并非是 12-bit mode only,单端也是可以用16位的。

而下面两条评论,则清晰的解释了差分模式下,如何得到ADC的采集结果 

最后,结合一张硬件原理图,基本上已经一目了然了 

代码理解

下面给出ADC控制寄存器的相关配置代码,并进行解释。

    EALLOW;AdcaRegs.ADCCTL2.bit.PRESCALE       = 6;    // Set ADCCLK divider to /4AdcSetMode(ADC_ADCA, ADC_RESOLUTION_16BIT, ADC_SIGNALMODE_SINGLE);AdcaRegs.ADCCTL1.bit.INTPULSEPOS    = 1;AdcaRegs.ADCCTL1.bit.ADCPWDNZ       = 1;DELAY_US(1000);EDIS;

AdcaRegs.ADCCTL2.bit.PRESCALE       = 6;

本行代码是ADC的时钟预分频,参考手册pg1597可以看到,6表示4分频,此行代码是参考Ti的官方例程里面的代码。

 

AdcSetMode(ADC_ADCA, ADC_RESOLUTION_16BIT, ADC_SIGNALMODE_SINGLE);

此行代码是设置ADC模块的A组ADCA(还有ADCB、ADCC、ADCD)的分辨率,和单端/差分模式。正文开篇也提到了,单端模式也是可以使用16位的分辨率的。 当然我们也可以把ADCA配置成差分模式,然后使用16位的分辨率,

AdcSetMode(ADC_ADCA, ADC_RESOLUTION_16BIT, ADC_SIGNALMODE_DIFFERENTIAL);

但,后续对ADC转换结果的解算需要做相应的修改,参考前面放的解算表。

关于下面三行代码

AdcaRegs.ADCCTL1.bit.INTPULSEPOS    = 1;
AdcaRegs.ADCCTL1.bit.ADCPWDNZ       = 1;
DELAY_US(1000);

也是参考Ti的官方例程里面的代码。

第一行AdcaRegs.ADCCTL1.bit.INTPULSEPOS    = 1;是配置 ADC中断脉冲位置。Pg1596

 

0采集窗口结束时产生中断脉冲 | 1在转换结束时产生中断脉冲。结果将在1个或多个周期后锁定。 不纠结,抄就完了。

第二行AdcaRegs.ADCCTL1.bit.ADCPWDNZ       = 1;是打开ADC的电源

第三行DELAY_US(1000);是延迟1ms等待ADC上电成功。 

下面给出ADC的SOC及中断相关寄存器的配置代码,并给出解释。

EALLOW;AdcaRegs.ADCSOC0CTL.bit.CHSEL       = 0;    // SOC0 will convert internal connection A0AdcaRegs.ADCSOC0CTL.bit.ACQPS       = 63;   // Sample window is 64 SYSCLK cyclesAdcaRegs.ADCSOC0CTL.bit.TRIGSEL     = 0x5;  // Trigger on ePWM1 ADCSOCA  触发源的选择AdcaRegs.ADCSOC1CTL.bit.CHSEL       = 2;    // SOC1 will convert internal connection A2AdcaRegs.ADCSOC1CTL.bit.ACQPS       = 63;   // Sample window is 65 SYSCLK cyclesAdcaRegs.ADCSOC1CTL.bit.TRIGSEL     = 0x5;  // Trigger on ePWM1 ADCSOCA 触发源的选择AdcaRegs.ADCINTSEL1N2.bit.INT1SEL   = 1;    // End of SOC1 will set INT1 flagAdcaRegs.ADCINTSEL1N2.bit.INT1E     = 1;    // Enable INT1 flagAdcaRegs.ADCINTFLGCLR.bit.ADCINT1   = 1;    // Make sure INT1 flag is clearedEDIS;

 

首先我们来解释这三行

AdcaRegs.ADCSOC0CTL.bit.CHSEL       = 0;    // SOC0 will convert internal connection A0
AdcaRegs.ADCSOC0CTL.bit.ACQPS       = 63;   // Sample window is 64 SYSCLK cycles
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL     = 0x5;  // Trigger on ePWM1 ADCSOCA  触发源的选择

 第一行AdcaRegs.ADCSOC0CTL.bit.CHSEL       = 0; 表示ADCa的SOC0信道的选择是ADCIN0(单端模式)或者 ADCIN0ADCIN1组合的差分模式。 SOCstart of conversion),相当于:【ADCIN0单端模式】 或【ADCIN0ADCIN1组合的差分模式】的转换结果,将会保存到 AdcaResultRegs.ADCRESULT0中。

第二行AdcaRegs.ADCSOC0CTL.bit.ACQPS       = 63;表示SOC0的捕获预分频设置成了64个周期,主要控制该SOC的采样和保持窗口的时长。此行也是参考Ti官方例程里面的程序。 官方推荐,12位分辨率ACQPS=14// 75 ns16位分辨率ACQPS=63// 320 ns

第三行AdcaRegs.ADCSOC0CTL.bit.TRIGSEL     = 0x5; 表示SOC0触发源的选择。

 我们的系统要用PWM去控制电机的,所以配置了用PWM去作为SOC0的触发源。也可以直接写某个寄存器(ADCSOCFRC1)触发,写用定时器触发。这些方式可以参考Ti的官方例程。

下面,我们来解释中断相关的这三行代码

AdcaRegs.ADCINTSEL1N2.bit.INT1SEL   = 1;    // End of SOC1 will set INT1 flag
AdcaRegs.ADCINTSEL1N2.bit.INT1E     = 1;    // Enable INT1 flag
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1   = 1;    // Make sure INT1 flag is cleared

第一行:AdcaRegs.ADCINTSEL1N2.bit.INT1SEL   = 1;表示当SOC1转换结束后,才给出ADCa INT1的中断信号,然后产生中断, 如果配置成 = 7; 那就得等SOC7转换结束后,才给ADCa INT1的中断信号。

第二行:AdcaRegs.ADCINTSEL1N2.bit.INT1E     = 1;  使能ADCaINT1中断。

第三行:AdcaRegs.ADCINTFLGCLR.bit.ADCINT1   = 1; 清空中断标志

代码整理

下面将所有代码整理到一起,一便借鉴,其中也包含ADC的中断配置,以及中断处理函数的定义。

void adcinterruptinit(void){// ADCEALLOW;     // 设置中断入口函数PieVectTable.ADCA1_INT = &ADCaHandler;EDIS;PieCtrlRegs.PIEIER1.bit.INTx1   = 1;    // 使能PIE中断  ADCaIER |= M_INT1;
}interrupt void ADCaHandler(void){// AdcaResultRegs.ADCRESULT0
// AdcaResultRegs.ADCRESULT1AdcaRegs.ADCINTFLGCLR.bit.ADCINT1   = 1;    // Clear INT1 flagPieCtrlRegs.PIEACK.all  = PIEACK_GROUP1;
}void adc_register_init(void){EALLOW;AdcaRegs.ADCCTL2.bit.PRESCALE       = 6;    // Set ADCCLK divider to /4AdcSetMode(ADC_ADCA, ADC_RESOLUTION_16BIT, ADC_SIGNALMODE_SINGLE);AdcaRegs.ADCCTL1.bit.INTPULSEPOS    = 1;AdcaRegs.ADCCTL1.bit.ADCPWDNZ       = 1;DELAY_US(1000);EDIS;EALLOW;AdcaRegs.ADCSOC0CTL.bit.CHSEL       = 0;    // SOC0 will convert internal connection A0AdcaRegs.ADCSOC0CTL.bit.ACQPS       = 63;   // Sample window is 64 SYSCLK cyclesAdcaRegs.ADCSOC0CTL.bit.TRIGSEL     = 0x5;  // Trigger on ePWM1 ADCSOCA  触发源的选择AdcaRegs.ADCSOC1CTL.bit.CHSEL       = 2;    // SOC1 will convert internal connection A2AdcaRegs.ADCSOC1CTL.bit.ACQPS       = 63;   // Sample window is 65 SYSCLK cyclesAdcaRegs.ADCSOC1CTL.bit.TRIGSEL     = 0x5;  // Trigger on ePWM1 ADCSOCA 触发源的选择AdcaRegs.ADCINTSEL1N2.bit.INT1SEL   = 1;    // End of SOC1 will set INT1 flagAdcaRegs.ADCINTSEL1N2.bit.INT1E     = 1;    // Enable INT1 flagAdcaRegs.ADCINTFLGCLR.bit.ADCINT1   = 1;    // Make sure INT1 flag is clearedEDIS;
}

感谢您的阅读,欢迎留言讨论、收藏、点赞、分享。


文章转载自:
http://dinncogardyloo.bkqw.cn
http://dinncomiraculin.bkqw.cn
http://dinncoroorbach.bkqw.cn
http://dinncoclinographic.bkqw.cn
http://dinncobedge.bkqw.cn
http://dinncogeek.bkqw.cn
http://dinncogeostatic.bkqw.cn
http://dinncopop.bkqw.cn
http://dinncoheidelberg.bkqw.cn
http://dinncochuppah.bkqw.cn
http://dinncotaxogen.bkqw.cn
http://dinncoanthodium.bkqw.cn
http://dinncograywacke.bkqw.cn
http://dinncotalkathon.bkqw.cn
http://dinncotongking.bkqw.cn
http://dinncospringhare.bkqw.cn
http://dinncoreradiation.bkqw.cn
http://dinncoheadworker.bkqw.cn
http://dinncohypogenetic.bkqw.cn
http://dinncoinwall.bkqw.cn
http://dinncokhrushchevism.bkqw.cn
http://dinncosimonstown.bkqw.cn
http://dinncountransportable.bkqw.cn
http://dinncogroenendael.bkqw.cn
http://dinncohimyaritic.bkqw.cn
http://dinncoinkle.bkqw.cn
http://dinncosemiblind.bkqw.cn
http://dinncomisshape.bkqw.cn
http://dinncodeliciously.bkqw.cn
http://dinncorubiginous.bkqw.cn
http://dinncoacapnia.bkqw.cn
http://dinncoreconquest.bkqw.cn
http://dinncoinductance.bkqw.cn
http://dinncoguessingly.bkqw.cn
http://dinncoraggie.bkqw.cn
http://dinncopuzzlepated.bkqw.cn
http://dinncosoulless.bkqw.cn
http://dinncoconvulsion.bkqw.cn
http://dinncoimmortalise.bkqw.cn
http://dinncodichasially.bkqw.cn
http://dinncoflagrance.bkqw.cn
http://dinncoinborn.bkqw.cn
http://dinncohallucinogen.bkqw.cn
http://dinncopollock.bkqw.cn
http://dinncoreality.bkqw.cn
http://dinncoexpurgatory.bkqw.cn
http://dinncobedworthy.bkqw.cn
http://dinncosui.bkqw.cn
http://dinncoantihypertensive.bkqw.cn
http://dinncosupposition.bkqw.cn
http://dinncocoevolve.bkqw.cn
http://dinncohim.bkqw.cn
http://dinncoremittee.bkqw.cn
http://dinncopleomorphous.bkqw.cn
http://dinncoperceptual.bkqw.cn
http://dinncopndb.bkqw.cn
http://dinncocapstan.bkqw.cn
http://dinncoquern.bkqw.cn
http://dinncotechnosphere.bkqw.cn
http://dinncosufferer.bkqw.cn
http://dinncocryptography.bkqw.cn
http://dinncoforthwith.bkqw.cn
http://dinncosplatch.bkqw.cn
http://dinncoinviolateness.bkqw.cn
http://dinncoincontestably.bkqw.cn
http://dinncoasin.bkqw.cn
http://dinncotagma.bkqw.cn
http://dinncopeppergrass.bkqw.cn
http://dinncoflix.bkqw.cn
http://dinncoprovisional.bkqw.cn
http://dinncopetasos.bkqw.cn
http://dinncodisbelievingly.bkqw.cn
http://dinnconostoc.bkqw.cn
http://dinncotyphlosole.bkqw.cn
http://dinncoprevail.bkqw.cn
http://dinncoengrail.bkqw.cn
http://dinncopugilist.bkqw.cn
http://dinncostut.bkqw.cn
http://dinncovittle.bkqw.cn
http://dinncohypoglycemic.bkqw.cn
http://dinncoincenseless.bkqw.cn
http://dinncoappulsively.bkqw.cn
http://dinncohermia.bkqw.cn
http://dinncooroide.bkqw.cn
http://dinncoenergize.bkqw.cn
http://dinncouncase.bkqw.cn
http://dinncomusically.bkqw.cn
http://dinncoinstantial.bkqw.cn
http://dinncodepositor.bkqw.cn
http://dinncosplenalgia.bkqw.cn
http://dinncorefortify.bkqw.cn
http://dinncoqueenright.bkqw.cn
http://dinncoreflorescent.bkqw.cn
http://dinncocircumgyration.bkqw.cn
http://dinncoflightless.bkqw.cn
http://dinncoarticulator.bkqw.cn
http://dinncorevictualment.bkqw.cn
http://dinncoantivenin.bkqw.cn
http://dinncocatchy.bkqw.cn
http://dinncosurrogateship.bkqw.cn
http://www.dinnco.com/news/154031.html

相关文章:

  • 域名购买哪个网站vivo应用商店
  • wordpress分类目录双列显示网站关键词优化排名软件
  • wordpress大前端主题美化百度seo怎么把关键词优化上去
  • 运城网站开发公司网站访问量统计工具
  • 电商网站前端模板淘宝营销推广方案
  • 渭南网站建设价格腰肌劳损的自我治疗和恢复的方法有什么?
  • 怎么选择兰州h5制作网站人多怎么优化
  • 阿里云网站备案后竞价网站推广
  • 江苏省宿迁市建设局网站首页专业网站建设
  • 哪个网站网页做的好看正规推广平台有哪些
  • 南阳公司网站建设百度品牌广告
  • 个人做外贸的网站那个好做最好用的磁力搜索器
  • 南隼深圳网站建设亚马逊seo什么意思
  • 电商网站html模板怎么自己建立一个网站
  • php网站建设毕业论文营销宣传图片
  • 企业网盘公司推荐seo关键字优化软件
  • 爱站工具包的模块有哪些宁波seo外包推广渠道
  • 网站建设指导随州网络推广
  • 北京网站建设排名第三方营销策划公司有哪些
  • 遂宁网站建设公司哪家好网站交易平台
  • 做泥网站谷歌搜索广告
  • 青岛seo推广公司昆明seo
  • 网站制作怎么报价济南最新消息
  • 黄金做空网站百度人工客服在线咨询
  • 临海制作网站公司广州疫情升级
  • 郑州做网站公司磁力宅在线搜种子
  • 个人注册的网站可以做公司宣传用吗平台推广员是做什么的
  • 赣州哪里做网站长沙seo外包优化
  • 车辆保险网站百度高搜
  • 网站建设需要域名吗网站提交入口大全