ADCCON1=0x33含义

cc2530 DMA+ADC 连续采样问题 - ZigBee技术 - 德州仪器在线技术支持社区
cc2530 DMA+ADC 连续采样问题
发表于8月前
<input type="hidden" id="hGroupID" value="43"
static __xdata uint16 adc_data[4];&/p>
&p>void dma_channel_init ( uint16 __xdata *dest_adr, uint8 lenl, uint8 trig )&/p>
&p>&{ & // Setup DMA confiuration & &&/p>
&p>halDMADesc_t *ch = HAL_NV_DMA_GET_DESC();//dma0&&&/p>
&p>HAL_DMA_SET_SOURCE(ch, &X_ADCL); &&/p>
&p>HAL_DMA_SET_DEST( ch, dest_adr ); &&/p>
&p>HAL_DMA_SET_LEN(ch ,lenl); &&/p>
&p>HAL_DMA_SET_VLEN(ch ,HAL_DMA_VLEN_USE_LEN); &&/p>
&p>HAL_DMA_SET_WORD_SIZE(ch,HAL_DMA_WORDSIZE_WORD);&/p>
&p>& HAL_DMA_SET_TRIG_SRC(ch,trig);&/p>
&p>& HAL_DMA_SET_TRIG_MODE(ch,HAL_DMA_TMODE_BLOCK_REPEATED);&/p>
&p>& HAL_DMA_SET_SRC_INC(ch,HAL_DMA_SRCINC_1); &&/p>
&p>HAL_DMA_SET_DST_INC(ch,HAL_DMA_DSTINC_1);&/p>
&p>& HAL_DMA_SET_IRQ(ch,HAL_DMA_IRQMASK_ENABLE); &&/p>
&p>HAL_DMA_SET_M8(ch,HAL_DMA_M8_USE_8_BITS); & &&/p>
&p>DMA0CFGL = ((uint16)ch) & 0x00FF; &&/p>
&p>&DMA0CFGH = ((uint16)ch) && 8 & 0x00FF; & &&/p>
&p>DMAARM = 0x80; //aborts all channels&&& &&/p>
&p>DMAIRQ = 0x00;// set dma interrupt to zero &&/p>
&p>DMAARM = 0x01;//starts channel 0&/p>
&p>void dma_adc_int(void)&/p>
&p>& /* DMA configuration: && * Set up DMA channel 0 for tranfer from ADCL and ADCH to && * the ADC result table. The ADC will generate the DMA trigger && * on end of conversion. && */ &&/p>
&p>&// Configure DMA channel 0 &&/p>
&p>dma_channel_init(adc_data, 4 , HAL_DMA_TRIG_ADC_CHALL);&/p>
&p>& // I/O-Port configuration &&/p>
&p>&P0SEL|=0xF0; // 通用IO &&/p>
&p>&P0DIR&=0xF0; //:输入& 1:输出 &&/p>
&p>APCFG |= HAL_ADC_CHANNEL_3 | HAL_ADC_CHANNEL_2 | HAL_ADC_CHANNEL_1 | HAL_ADC_CHANNEL_0;//模拟IO使能 &&&&/p>
&p>&&//&& EA = 1; DMAIE = 1; DMAIF = 0; &&/p>
&p>&ADCCON1 = 0x33;//full speed&& bit1& bit0 &&/p>
&p>ADCCON2 = 0x30 | 0x80 | 0x04;//AVDD5 512 12ENOB P0_4 & //启动ADC序列采集&&&&/p>
&p>//AIRQ = 0x00;&&&&&&&&&&&&&&&& //清中断标志 &&/p>
&p>&EA = 0x01; & DMAIE = 0X01;//使能DMA&&&/p>
&p>&DMAIF = 0x00; &&/p>
&p>ADCCON1 |= 0x40;//启动ADC序列采集 &&/p>
&p>DMAREQ = 0x01;//启动DMA传输 &&/p>
&p>&/* ADC conversion : & * The ADC will run in continous mode until disabled. & * Await all transfers being completed. & */ &&/p>
&p>&while( DMAIRQ != (0x01)); &&/p>
&p>&// Stop Continuous mode & //ADCCON1 |= ADCCON1_ST | BIT1 | BIT0;&&/p>
&p>dma和adc配置,程序运行只采样一次。&/p>&div style=&clear:&>&/div>" />
cc2530 DMA+ADC 连续采样问题
此问题尚无答案
All Replies
static __xdata uint16 adc_data[4];
void dma_channel_init ( uint16 __xdata *dest_adr, uint8 lenl, uint8 trig )
&{ & // Setup DMA confiuration & &
halDMADesc_t *ch = HAL_NV_DMA_GET_DESC();//dma0&&
HAL_DMA_SET_SOURCE(ch, &X_ADCL); &
HAL_DMA_SET_DEST( ch, dest_adr ); &
HAL_DMA_SET_LEN(ch ,lenl); &
HAL_DMA_SET_VLEN(ch ,HAL_DMA_VLEN_USE_LEN); &
HAL_DMA_SET_WORD_SIZE(ch,HAL_DMA_WORDSIZE_WORD);
& HAL_DMA_SET_TRIG_SRC(ch,trig);
& HAL_DMA_SET_TRIG_MODE(ch,HAL_DMA_TMODE_BLOCK_REPEATED);
& HAL_DMA_SET_SRC_INC(ch,HAL_DMA_SRCINC_1); &
HAL_DMA_SET_DST_INC(ch,HAL_DMA_DSTINC_1);
& HAL_DMA_SET_IRQ(ch,HAL_DMA_IRQMASK_ENABLE); &
HAL_DMA_SET_M8(ch,HAL_DMA_M8_USE_8_BITS); & &
DMA0CFGL = ((uint16)ch) & 0x00FF; &
&DMA0CFGH = ((uint16)ch) && 8 & 0x00FF; & &
DMAARM = 0x80; //aborts all channels&&& &
DMAIRQ = 0x00;// set dma interrupt to zero &
DMAARM = 0x01;//starts channel 0
void dma_adc_int(void)
& /* DMA configuration: && * Set up DMA channel 0 for tranfer from ADCL and ADCH to && * the ADC result table. The ADC will generate the DMA trigger && * on end of conversion. && */ &
&// Configure DMA channel 0 &
dma_channel_init(adc_data, 4 , HAL_DMA_TRIG_ADC_CHALL);
& // I/O-Port configuration &
&P0SEL|=0xF0; // 通用IO &
&P0DIR&=0xF0; //:输入& 1:输出 &
APCFG |= HAL_ADC_CHANNEL_3 | HAL_ADC_CHANNEL_2 | HAL_ADC_CHANNEL_1 | HAL_ADC_CHANNEL_0;//模拟IO使能 &&&
&&//&& EA = 1; DMAIE = 1; DMAIF = 0; &
&ADCCON1 = 0x33;//full speed&& bit1& bit0 &
ADCCON2 = 0x30 | 0x80 | 0x04;//AVDD5 512 12ENOB P0_4 & //启动ADC序列采集&&&
//AIRQ = 0x00;&&&&&&&&&&&&&&&& //清中断标志 &
&EA = 0x01; & DMAIE = 0X01;//使能DMA&&
&DMAIF = 0x00; &
ADCCON1 |= 0x40;//启动ADC序列采集 &
DMAREQ = 0x01;//启动DMA传输 &
&/* ADC conversion : & * The ADC will run in continous mode until disabled. & * Await all transfers being completed. & */ &
&while( DMAIRQ != (0x01)); &
&// Stop Continuous mode & //ADCCON1 |= ADCCON1_ST | BIT1 | BIT0;&
dma和adc配置,程序运行只采样一次。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
dma0& P0_0 1 2 3作为采样输入
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元56621分
你好,请问你的问题是什么,是没办法连续采样么?
如果要上传ZigBee Sniffer Log,请把文件另外为psd或者cubx文件,用附件方式上传,不要使用截图没有任何作用。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.相关文章推荐
转自:http://blog.csdn.net/feilusia
ps:1、注意分压电阻,最好两个电阻都超过100k,
2、resolution为 HAL_ADC_RESOLUTION_...
本文集合了香瓜整理的CC2541的新手常见问题,不断更新
今天需要对cc2541 gpio和adc做几个测试,就学习了下怎么使用gpio和adc
1:ADC的使用
参考链接:/chenzhao207/p...
CC2541蓝牙学习——定时器1的捕获/比较功能
博客园-原创精华区
/chenzhao207/p...
要实现一个智能篮球场套件,需要设计一个佩戴在篮球运动员手臂上的可以检测投篮、记步的手环,以及一套可以根据RSSI定位运动员的蓝牙定位装置。下面是大致需要的步骤:
首先,需要用CC25...
本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法。...
如果裸机跑led灯程序,步骤很简单:
1,设置io引脚为输出,
2,给io给值1 或 0。
如果带OSAL系统,如何操作led,下面将详细讲,我用的是TI的蓝牙4.0BLE协议栈BLE-CC254x-...
带着从头到尾好好学习CC2540和CC2541的目的,从最基本的项目开始
本人QQ ,欢迎交流学习本文从最基本的LED实验开始讲起。 LED实验主要通过控制IO口,实现LED的点亮...
在 CC2541 中,USART0 和 USART1 是串行通信接口,它们能够分别运行于异步 USART 模式或者同步 SPI 模式。两个 USART 的功能是一样的,可以通过设置在单独的 IO 引脚...
SimpleBLEPeripheral初始化的工作:
1.广播数据设置
2.配对数据设置
3.Initialize GATT attributes (加服务)
4.Setup the Simpl...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)CC2540的传输速度和ADC - 蓝牙Bluetooth 技术 - 德州仪器在线技术支持社区
CC2540的传输速度和ADC
发表于3年前
<input type="hidden" id="hGroupID" value="42"
&span style=&color:#0000font-size:&>大家好,我有两个问题想咨询一下。&/span>&/p>
&p>&span style=&color:#0000font-size:&>1。.我用&a href=&.cn/product/cn/CC2540& target=&extwin&>CC2540&/a>与手机传输数据,只能达到么1.8KB/S,再快就会丢包。&/span>&/p>
&p>&span style=&color:#0000font-size:&>数据手册上讲一次连接可以传输4个包,可是我测试的时候一次连接只能传1个包,传两个包都会丢数据。这是为什么呢?&/span>&/p>
&p>&span style=&color:#0000font-size:&>2。&a href=&.cn/product/cn/CC2540& target=&extwin&>CC2540&/a>的ADC输出数值有偏移(我用的是14位精度),虽然转换曲线是直线,但是直线的斜率变了&/span>&/p>
&p>&span style=&color:#0000font-size:&>我现在用的办法是找一个较大的值和一个较小的值,生成一个直线方程才能校准(见下方)。&/span>&/p>
&p>&span style=&color:#0000font-size:&>可是,后来发现每个芯片的偏移量和斜率都不一样,难道每个芯片都要用程序去校准?&/span>&/p>
&p>&span style=&color:#0000font-size:&>//ADC计算值应该为4407,实测为4212&/span>&br>&span style=&color:#0000font-size:&> //ADC计算值应该为3733,实测为3602&/span>&br>&span style=&color:#0000font-size:&> //据上两个点生成直线方程 (y=1.105x-247)&/span>&/p>&div style=&clear:&>&/div>" />
CC2540的传输速度和ADC
此问题尚无答案
All Replies
大家好,我有两个问题想咨询一下。
1。.我用与手机传输数据,只能达到么1.8KB/S,再快就会丢包。
数据手册上讲一次连接可以传输4个包,可是我测试的时候一次连接只能传1个包,传两个包都会丢数据。这是为什么呢?
2。的ADC输出数值有偏移(我用的是14位精度),虽然转换曲线是直线,但是直线的斜率变了
我现在用的办法是找一个较大的值和一个较小的值,生成一个直线方程才能校准(见下方)。
可是,后来发现每个芯片的偏移量和斜率都不一样,难道每个芯片都要用程序去校准?
//ADC计算值应该为4407,实测为4212 //ADC计算值应该为3733,实测为3602 //据上两个点生成直线方程 (y=1.105x-247)
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
榜眼39555分
想提高传输速度,请参考:http://processors./index.php/OverlappedProcessing
关于ADC,请看这个文档的第12章:/lit/ug/swru191f/swru191f.pdf
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
hello Yan,
你所说的两个文档,我之前都有看过。是因为我的测到的实际值与文档的理论值不一样才来此咨询的。
与否告知:
1,与手机的实时传输速度提高到3.5KB/S能否稳定工作不丢包?
2,ADC的偏差是否由硬件本身造成的?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
ADC的精度问题还是没有解决,我测试了两块板情况都一样,测试情况如下:(我现在用AVDD5作参考电压,14位分辨率,ADC1口采样)
一块板AVDD5的电压为3.268V,ADC1的电压为1.634V,理论转换值应该是4096,
可是连续5次测到的值为:,,3931。
另一块板AVDD5的电压为3.269V,ADC1的电压为1.633V,理论转换值应该是4092,
可是连续5次测到的值为:,,4016。
如果每个都不一样,软件也没办法校准啊,请问如何解决?我试过不跑协议,只写一个简单的ADC采样程序,测试情况都差不多。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
这种情况应该属于参考电压偏差大, 如果对ADC一致性要求较高, 可以考虑使用外部专门的参考源。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
这个是参考电源的偏差,建议使用外部精准参考电压源
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
Dear zongru zhan,
其实VDD5就是外部参考电压啊,
鉴于你的建议,我也做了如下测试,
在ADC1接的电压=0.506V,在ADC7接的电压=0.653V
用内部参考电压,测得ADC1的ADC值为3392,ADC7的ADC值为3380。(这里我非常不明白,不准就不准,为什么电压大的值反而要小?)
然后用ADC7做参考电压,测得ADC1的值为5252。(这个也不准啊,正常值应该是0.506/0.653*)
测试的时候,没跑协议,代码很简单,
#include&ioCC2541.h&
unsigned int count,val[10];
&int AdValue=0;
&void main()
&{& //设置系统时钟32MHz &&&
&&&& CLKCONCMD &= ~0x40; &&&
&&&& while(CLKCONSTA & 0x40);&&& &&&
&&&& CLKCONCMD &= ~0x47; &&&
&//ADC初始化&&&
&&&&&& APCFG=0
&&&& ADCCON1 = 0x33;
&&&& ADCCON3 = 0x31;
&//ADC采样5次&&&&
&& for(count=0;count&5;count++) &&&
& &{&& &&&&&
&&&&& && ADCCON3 = 0x31;&&&&&&&&& //内部基准& 12位ENOB& 通道1
&&&&&&& while(!(ADCCON1&0X80));
& &&&&& AdValue = ADCL&&2 ; &&&&&&&
&&&&&& &AdValue |= ADCH &&6; &&&&&&
&&&&& & if(AdValue&0) AdValue=0; &&&&&&&
&&&&&&&&val[count]=AdV &&&
&&&& } &&&
&&&& while(1);
TI的工程师帮看下,这是不是芯片本来的缺陷?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
我说的外部参考源 是专门的参考电压输出片子 比如
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
举人1010分
文档上有说明,最好使用内部参考电压1.25V来做标准。外部电路可以采用分压法测量。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.在keil里定义 unsigned char td[8] ={ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 };_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
在keil里定义 unsigned char td[8] ={ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 };
请问要如何对数组中的地址赋值,比如改变0x31这个地址里的内容?
我有更好的答案
定义一个指针变量,unsigned char *ptr = td[1]; //表示指针指向31这个地址。*ptr =//xx是你想对31这个地址赋的值。
采纳率:71%
来自团队:
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;

我要回帖

更多关于 0x00 含义 的文章

 

随机推荐