深入理解ARM体系架构(S3C6410)---ad转化实例
- UID
- 1029342
- 性别
- 男
|
深入理解ARM体系架构(S3C6410)---ad转化实例
对于adc的功能大家都已经很熟悉了,以前我也写过关于S3C6410中ad的文章,如:http://blog.csdn.net/muge0913/article/details/7059241
本实例是把采集的ad数据转化后显示在lcd屏上,在这直接把自己调试好的源码贴出来
ad转化器相关代码:
[cpp] viewplaincopyprint?
- void adc_init()
- {
-
- char preScaler = 66500000/2500000 - 1; //PCLK=66M
- rADCCON = (1<<14)|(preScaler<<6)|(0<<3)|(0<<2);//通道AIN0
- // rADCCON =0x44c1;//通道AIN0
- }
- int read_adc()
- {
-
- rADCCON |= 0x01; //start ADC
-
- while(rADCCON & 0x1); //check if Enable_start is low
-
-
- while(!(rADCCON & 0x8000)); //check if EC(End of Conversion) flag is high
-
- return ( (int)rADCDAT0 & 0x3ff );
- }
-
- void delay_adc()
- {
- int i,j;
- for(i=0;i<10000000;i++)
- for(j=0;j>10000000;j++);
- }
lcd相关代码:
初始化子程序:
[cpp] viewplaincopyprint?
- void LCD_Init(void)
- {
-
- //设置LCD调光
- //rGPFCON |= (1<<30); //设置LCD调光管脚GPF15(PWM1)为输出
- //rGPFDAT |= (1<<15); //rGPFDAT = 0x00002000;
- //rGPFPUD &= ~(1<<30); //rGPFPUD = 0x00000000;
-
- //设置VD0~15
- rGPICON = 0xaaaaaaaa; //设置GPI0~15为LCD VD0~15
- rGPIPUD = 0xffffffff;
-
-
-
- //设置VD16~23和HSYNC、VSYNC、VDEN、VCLK
- rGPJCON = 0x00aaaaaa;
- rGPJPUD = 0xffffffff;
- rWINCON0 &= ~(1<<0);
-
- //LCD寄存器设置
- rSPCON &= (~0x3);
- rSPCON |= (1<<0); //设置RGBI/F配置
- rMIFPCON &= ~(1<<3); //设置LCD支路为一般模式
-
- rVIDCON0 = (0<<29)|(0<<26)|(0<<17)|(1<<16)|(9<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2);
- rVIDCON1 = 1<<7; //1=RGB类型LCD设备在VCLK上升沿得到视频数据
-
- //设置屏的时序
- rVIDTCON0 = (0x00<<16)|(0x00<<8)|(0x02<<0);
- rVIDTCON1 = (0x2d<<16)|(0x04<<8)|(0x06<<0);
- rVIDTCON2 = (271<<11)|(479<<0);
-
- //设置窗口格式
- rWINCON0 = 11<<2; //设置24BPP
-
- //设置窗口位置
- rVIDOSD0A = (0<<11)|(0<<0);
- rVIDOSD0B = (479<<11)|(271<<0);
- rVIDOSD0C = (((480*272)&0xffffff)<<0); //4.3屏幕分辨率480*272
-
- //设置Window1的开始和结束的缓存地址与地址在内存中的存放地址以及缓存的大小
- rVIDW00ADD0B0 = ((addr>>24)<<24)|(addr&0xffffff);
- rVIDW00ADD1B0 = (addr&0xffffff + 480*272);
- rVIDW00ADD2 = (0<<13)|(480<<0);
-
- //设置抖动
- rDITHMODE=(1<<5)|(1<<3)|(1<<1)|(1<<0);
-
- //开显示
- rVIDCON0 |= (3<<0);
- rWINCON0 |= (1<<0);
- }
|
|
|
|
|
|