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

代理ip访问网站潍坊网站排名优化

代理ip访问网站,潍坊网站排名优化,重庆奉节网站建设公司哪家专业,wordpress网站显示不全前言 7801资料读起来不是很好理解#xff0c;大概率是之前MTK的大佬写的。在此以简单的方式进行描述。我们做一个简单的规则组软件触发Demo。因为规则组通道只有一个数据寄存器#xff0c;因此还需要用上DMA方式搬运数据到内存。 AC7801的ADC简介 7801的ADC是一种 12 位 逐…前言 7801资料读起来不是很好理解大概率是之前MTK的大佬写的。在此以简单的方式进行描述。我们做一个简单的规则组软件触发Demo。因为规则组通道只有一个数据寄存器因此还需要用上DMA方式搬运数据到内存。 AC7801的ADC简介 7801的ADC是一种 12 位 逐次逼近型 模拟数字转换器拥有 12 路外部通道和 2 路内部通道支持单次、连续、扫描或间断转换多种模式。模拟监控器特性允许应用程序监测输入电压是否超出设定的电压范围。 特性  12 位分辨率  通道输入电压范围 AVSS Vin AVDD  最大转换速率 1Msps  14 路通道 12 路外部通道 1 路内部温度传感器 T-Sensor 1 路内部带隙基准Bandgap 每路通道可单独配置采样时间  转换序列分为 规则组 regular group 和注入组 injection group − 规则组最多可配置 12 个通道 − 注入组最多可配置 4 个通道  8 种操作模式 ( 方便起见称为 mode x x1~8) − 规则组单通道单次转换 (mode1) − 规则组单通道连续转换 (mode2) − 规则组扫描 注入组扫描模式多通道单次转换 (mode3 注入组扫描模式 ) − 规则组扫描 注入组间隔模式多通道单次转换 (mode3 注入组间隔模式 ) − 规则组扫描 自动触发注入组扫描模式多通道单次转换 (mode4) − 规则组扫描 注入组扫描模式多通道连续转换 (mode5 注入组扫描模式 ) − 规则组扫描注入组间隔模式多通道连续转换(mode5 注入组间隔模式 ) − 规则组扫描 自动触发注入组扫描模式多通道连续转换 (mode6) − 规则组子组扫描模式转换 (mode7) − 注入组子组扫描模式转换 (mode8)  通过内部软件触发或外部硬件触发启动 ADC  模拟监控器功能 − 配置为单个或所有通道电压检查 − 监控通道电压是否低于低阈值或高于高阈值  中断         − 规则或注入组转换结束 (EOC End Of Conversion)         − 注入组转换结束 (IEOC)         − 模拟监控器事件 (AMO)  DMA 访问仅用于规则组通道 典型操作流程 ADC 首先上电然后可以通过内部 SWSTART 或外部触发源触发 ADC 该触发来源于其它模块。触发后ADC 转换器单元开始工作并将选择信号发送至输入通道选择器根据规则或注入组通道序列逐个选择所需的通道。在一个通道完成转换后转换结果将根据当前转换通道所属的组存储到 RDR 或 IDRx 中并且产生相应的 EOC 或 IEOC 标志置位。模拟监控器工作时如果发生相应的事件则会出现相关的状态标志。 使用DMA 由于规则组通道只有一个数据寄存器因此建议使用 DMA 功能 以避免在有多个规则组通道进行转换时丢失转换结果。DMA 功能专用于规则组通道。只有规则组通道转换结束标志才会产生 DMA 请求。只有产生了 DMA 请求 DMA 才会将转换数据从ADC_RDR 搬运到用户指定的目标位置。 ADC流程 经典的初始化DMA初始化。 ADC的初始化185/186两行注释看的一脸懵逼 ADC的回调 DMA的回调 业务代码 旋转电位器查看打印值 由单个ADC改成多个ADC AC7801的ADC写的注释相对比较完整但是没说明软件触发从1个怎么改到多个。 使用时候需要注意下图中红框部分有些DISABLE和ABLE的参数错了大概率就不可能正常采样。黄框部分就是从1个ADC改成3个需要修改的地方。 读取时候只需要触发一次ADC0即可 具体代码如下 #include adc_sample.h#define Delay5us (APB_BUS_FREQ/200000-1) #define Delay5ms (APB_BUS_FREQ/200-1) #define Delay1s (APB_BUS_FREQ-1)uint8_t g_dmaFinish 0; // DMA传输完成 uint8_t g_halfDmaFinish 0; // DMA传输半完成 uint8_t g_dmaTransError 0; // DMA传输错误 uint32_t g_ADCValueBuffer[DMA_TRANSFER_NUM 1] {0}; uint32_t g_timerCnt 0; uint16_t g_regularAverageSampleValue 0; // 规则组采样平均值 uint16_t g_injectAverageSampleValue 0; // 注入组采样平均值 uint16_t g_adcInjectValue[4]; uint8_t g_AMOFlag 0; // 模拟看门狗事件标志 /* 注意EOC标志写0或读取ADC_RDR都会清除该标志位。 在进行debug时如果有打开memory窗口或打开ADC寄存器。 该标志会被debug清除。 */ uint8_t g_EOCFlag 0; // 规则组转换结束标志。 uint8_t g_IEOCFlag 0; // 注入组转换结束标志。void ADC_Callback(void *device, uint32_t wpara, uint32_t lpara) {if (wpara ADC_STR_EOC_Msk) // 规则组中断标志{g_EOCFlag 1;}if (wpara ADC_STR_AMO_Msk) // 模拟监控中断标志{g_AMOFlag 1;} }void ADC_DMACallback(void *device, uint32_t wpara, uint32_t lpara) {/*wparam为DMA通道状态状态含义可参考CHANNELx_STATUS寄存器CHANNELx_STATUS[2] 传输错误CHANNELx_STATUS[1] 半传输完成相对设置的transferNum如果半传输中断有使能transferNum设为6则DATA_TRANS_NUM为3时产生中断进入回调CHANNELx_STATUS[0] 传输完成*/if ((wpara 0x01) 0x1){g_dmaFinish 1;}if ((wpara 0x02) 0x2){g_halfDmaFinish 1;}if ((wpara 0x04) 0x4){g_dmaTransError 1;} }void ADC_DMAInit(void) {uint32_t tmpMemStartAddr (uint32_t)g_ADCValueBuffer[0];uint32_t tmpMemEndAddr (uint32_t)g_ADCValueBuffer[DMA_TRANSFER_NUM 1]; /// Setting memory DMA addressDMA_ConfigType tmpDMAConfig;memset(tmpDMAConfig, 0x00, sizeof(DMA_ConfigType));tmpDMAConfig.memStartAddr tmpMemStartAddr; // 设置DMA开始地址tmpDMAConfig.memEndAddr tmpMemEndAddr; // 设置DMA结束地址tmpDMAConfig.periphStartAddr (uint32_t)((ADC0-RDR)); /// Move ADC DR to memorytmpDMAConfig.channelEn ENABLE; /// 使能DMAx通道tmpDMAConfig.finishInterruptEn ENABLE; /// 使能DMA传输完成中断tmpDMAConfig.halfFinishInterruptEn DISABLE; /// 去能DMA半传输完成中断tmpDMAConfig.errorInterruptEn ENABLE; /// 使能DMA传输错误中断tmpDMAConfig.channelPriority DMA_PRIORITY_VERY_HIGH; /// 设置DMA通道优先级0~3 优先级由低到高tmpDMAConfig.circular ENABLE; /// 使能循环模式如果只想工作一次设为0即可。tmpDMAConfig.direction DMA_READ_FROM_PERIPH; /// 0: 从外设读取1从存储器读取tmpDMAConfig.MEM2MEM DISABLE; /// 0在非存储器与存储器之间传输1在存储器与存储器之间传输tmpDMAConfig.memByteMode DMA_MEM_BYTE_MODE_1TIME; /// MEM字分割传输数0:32-bit,1:16-bit[15:0]; 2:16-bit[23:16][7:0];3:8-bit。详情可参考AC781X芯片手册 表20-2 可编程数据宽度数据对齐tmpDMAConfig.memIncrement ENABLE; /// 1:MEM地址增加tmpDMAConfig.periphIncrement DISABLE; /// 0外设地址固定tmpDMAConfig.memSize DMA_MEM_SIZE_32BIT; /// 0:8-bit,1:16-bit,2:32-bittmpDMAConfig.periphSize DMA_PERIPH_SIZE_16BIT; /// 0:8-bit,1:16-bit,2:32-bittmpDMAConfig.transferNum DMA_TRANSFER_NUM; /// DMA通道传输长度tmpDMAConfig.periphSelect DMA_PEPIRH_ADC0; // 外设选择tmpDMAConfig.callBack ADC_DMACallback; /// 设置DMA中断回调DMA_Init(DMA0_CHANNEL0, tmpDMAConfig); /// ADC 使用DMA1通道每个模块对应的DMA通道可参考 AC781X芯片手册 表20-1 DMA请求列表NVIC_EnableIRQ(DMA0_CHANNEL0_IRQn); /// 使能DMA1中断请求 }void ADC_init() {ADC_ConfigType tempAdcConfig;ADC_ConfigType *adcConfig;adcConfig tempAdcConfig;// 配置PINMUXGPIO_SetFunc(GPIOA, GPIO_PIN4, GPIO_FUN2); /// ADC_IN6 Analog function enableGPIO_SetFunc(GPIOA, GPIO_PIN3, GPIO_FUN2); /// ADC_IN7 Analog function enableGPIO_SetFunc(GPIOA, GPIO_PIN2, GPIO_FUN2); /// ADC_IN8 Analog function enableadcConfig-clkPsc ADC_CLK_PRESCALER_1; /// Set ADC Clk 24M/2/(01)adcConfig-scanModeEn ENABLE; // 扫描模式adcConfig-continousModeEn DISABLE; // 连续模式adcConfig-regularDiscontinousModeEn DISABLE; // 1打开规则组间断转换模式adcConfig-injectDiscontinousModeEn DISABLE; // 1打开注入组间断转换模式adcConfig-injectAutoModeEn DISABLE; // 1自动注入模式adcConfig-intervalModeEn DISABLE; // 1注入组为间隔转换模式adcConfig-regularDiscontinousNum 0; //adcConfig-EOCInterruptEn ENABLE; // EOC中断使能adcConfig-IEOCInterruptEn ENABLE; // IEOC中断使能adcConfig-interruptEn ENABLE; // 中断使能adcConfig-regularDMAEn ENABLE; // 使能ADC DMAadcConfig-regularTriggerMode ADC_TRIGGER_INTERNAL; // ADC触发源内部触发adcConfig-regularSequenceLength 3; // 规则组长度设为3adcConfig-dataAlign ADC_DATA_ALIGN_RIGHT; // 右对齐adcConfig-callBack ADC_Callback; // 回调adcConfig-powerMode ADC_POWER_ON; // 上电ADC_Init(ADC0, adcConfig); /// ADC works Mode Config// ADC转换率计算公式 转换时间 采样时间转换时间同步时间 转换时间 (SPT12)/ADC模块时钟频率5/APB时钟频率// 备注1.同步时间为5个APB CLK。2.ADC时钟频率 APB时钟频率 /(分频系数1)// 规则组通道设置ADC_SetRegularGroupChannel(ADC0, ADC_CH_7, ADC_SPT_CLK_7, 0); // 采样转换时间 (712)/24000000 5/24000000 1usADC_SetRegularGroupChannel(ADC0, ADC_CH_8, ADC_SPT_CLK_7, 1); // 采样转换时间 (712)/24000000 5/24000000 1usADC_SetRegularGroupChannel(ADC0, ADC_CH_6, ADC_SPT_CLK_7, 2); // 采样转换时间 (712)/24000000 5/24000000 1us }void ADC_SampleSoftwareTrigerADC(void) {ADC_init();ADC_DMAInit(); // ADC DMA初始化while (1){// 每次转换数据清零memset(g_ADCValueBuffer, 0x00, sizeof(g_ADCValueBuffer));ADC_SoftwareStartRegularConvert(ADC0); /// 软件触发规则组采样udelay(8); // 需要采样8个通道延时8us以保证数据采样完成printf(%d %d %d\r\n, g_ADCValueBuffer[0],g_ADCValueBuffer[1],g_ADCValueBuffer[2]);mdelay(100);} }转换率公式
http://www.sadfv.cn/news/20727/

相关文章:

  • 织梦医院网站开发怎么做网站弹幕
  • 山西网络网站建设销售公司电子商务网站业务流程图
  • 做赚钱的网站有哪些徐州商城建站系统
  • 保定网站搜索排名定制开发网站 推广
  • 深圳做网站 汉狮网络asp网站首页模板
  • 做网站找哪家好?聚禄鼎科技是一家给企业做网站的公司WordPress星光主题
  • 做医疗网站需要跨境电商平台有哪些新手入门
  • 没有营业执照怎么样做百度企业网站网络维护技术
  • 广州网站设计 信科网络seo从入门到精通
  • 网站手机app开发php网站开发教学
  • 网站制作费用预算表wordpress网站 frp穿透
  • 韶关做网站的公司龙岗门户
  • 手机网站左右滑动哪里可以鉴定钻石
  • 个人网站做博客还是做论坛iis7添加php网站
  • 公司网站备案信息查询郑州代理记账
  • 网站建设的目标和需求广州开发区官网
  • 建房的网站网站建站报价
  • 做自适应网站设计什么软件可以做动画视频网站
  • icp备案网站快速备案专家网站怎么做自营销
  • 可以做请柬的网站网络舆情事件案例
  • 精准扶贫电商网站建设计划书有没有专业做淘宝网站吗
  • 怎么在网上做网站织梦音乐网站模板
  • wordpress做大型网站中国建设银行网站公积金查询系统
  • 网站后台怎么不能上传图片wordpress改后台登录地址
  • 实力网站开发广州越秀区核酸检测点
  • 电商网站模板html减肥网站模板
  • 做网站竞价没有点击率php7.1 WordPress
  • 拥有服务器后如何做网站网站建设设计文档模板
  • 台州网站优化方案网站开发和程序开发
  • 电商网站后台建设莱芜做网站