历史上的今天
返回首页

历史上的今天

今天是:2025年01月21日(星期二)

正在发生

2020年01月21日 | 【ARM】2410裸机系列-ADC数模转换

2020-01-21 来源:eefocus

开发环境

1、硬件平台:FS2410

2、主机:Ubuntu 12.04


ADC寄存器配置

1、初始化ADC(ADCCON)

设置预分频,预分频因子,选择A/D转换通道,并选择正常模式且启动转换

2、判断转换是否结束(ADCCON[5])

3、读取转换结果(ADCDATn)


串口的初始化

见《串口通信·FS2410》:http://infohacker.blog.51cto.com/6751239/1223137

 


源代码

//adc.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include "2410addr.h"      //头文件,包含寄存器的设置
                                       
void putc(char ch)      //发送字符
{
    while(!(rUTRSTAT0 & 0X2));    //判断发送缓冲区是否为空
                                            
    rUTXH0 = ch;        //发送
}
                                       
char getc(void)       //接收字符
{
    while(!(rUTRSTAT0 & 0X1));     //判断接收缓冲区是否为空
                                           
    return rURXH0;      //接收
}
                                       
void putstr(char *str)      //发送字符串
{
    while(*str != '')
    {
        if(*str == 'n')
        {
            putc('n');
            putc('r');
        }
        else
            putc(*str);
                                               
        str++;
    }
}
                                       
void wait(long long max)      //延迟函数
{
    for(; max > 0; max--)
        ;
}
                                       
void itoa(unsigned long value)    //进行字符转换
{
    unsigned long temp;
    int i, flag = 0;
    char data[4];
                                           
    for(i = 0; i < 4; i++)    //清空数组
        data[i] = '';
                                       
    for(i = 0; i < 3; i++)
    {
        temp = (value >> 4 * i) & 0xf;
                                               
        if(temp < 10)
            data[2 - i] = '0' + temp;
        else
        {
            if(temp <= 0xf)
                data[2 - i] = 'a' + temp - 10;
        }
    }
                                       
    putstr(" Value of AIN0 is 0x");
    putstr(data);
                                           
    putstr("r");
    putstr("n");
}
                                       
int main(void)
{
    rGPHCON = rGPHCON & ~(0xf << 4) | (0xa << 4);    //配置RDX0与TDX0
    rGPHUP = 0X0c;     //设置上拉电阻
                                       
    rUFCON0 = 0;    //不用FIFO
    rUMCON0 = 0;    //不用流控
    rULCON0 = 0X3;  //8位数据,1个停止位,无校验,正常模式
    rUCON0 = 0X5;   //时钟源位PCLK,中断方式为查询
    rUBRDIV0 = ((int)(50000000 / 115200 / 16) - 1); //设置波特率为115200
    rADCCON = 0x4c41;  //初始化ADC
                                       
    putstr("nThis is ADC test:n");
                                       
    unsigned long temp = 0;
                                           
    while(1)
    {
        while((rADCCON & (1 << 15)) == 0);     //判断是否转换结束
                                       
        temp = rADCDAT0;     //读取转换值
        itoa(temp);
                                               
        rADCCON = 0x4c41;     //再启动ADC
        wait(200000);
    }
                                       
    return 0;
}

//start.S

1
2
3
4
5
6
7
8
9
10
11
12
13
.text
.global _start
_start:
#define WATCHDOG 0x53000000
    ldr r0, =WATCHDOG
    mov r1, #0
    str r1, [r0]
                                   
    ldr sp, =1024*4
    bl main
                                   
loop:
    b loop

//Makefile

推荐阅读

史海拾趣

CR Magnetics公司的发展小趣事

CR Magnetics深知品质是企业的生命线。因此,公司始终坚持以质量为核心的管理理念,从原材料的采购到产品的生产、检测、包装等每一个环节都严格把控。此外,公司还通过了ISO9001:2008质量管理体系认证,并确保所有产品均符合RoHS等环保要求。这些举措使得CR Magnetics的产品赢得了客户的广泛信赖和好评。

台湾远翔(Feeling Technology)公司的发展小趣事

随着全球对绿色低碳发展的重视,乔光电子积极响应国家号召,于2021年底开始筹划绿色工厂创建项目。公司引入了产品全生命周期理念,持续开展节能低碳、环境保护工作,建立了质量管理体系、职业健康安全管理体系、环境管理体系和能源管理体系等。通过实施一系列绿色低碳、节能技改措施,如废气粉尘收集与处理系统、造粒珠磨机电机变频改造等,乔光电子实现了万元产值能耗和碳排放强度的逐步改善,为企业的可持续发展奠定了坚实基础。

Caddock公司的发展小趣事

随着电子行业的不断发展,精度和电阻稳定性的要求越来越高。Caddock公司积极投入研发,成功开发出Tetrinox电阻系统。这一技术具有低温度系数和超高稳定性,使得电阻器和电阻器网络在精密和超精密模拟系统中得到了广泛应用。

AND Displays公司的发展小趣事

随着技术实力的增强和产品线的丰富,AND Displays开始积极拓展市场。公司不仅在国内建立了完善的销售网络,还积极开拓海外市场。通过与全球各大电子产品制造商的合作,AND Displays的显示面板逐渐进入了全球供应链,品牌影响力不断提升。同时,公司还注重品牌建设,通过参加国际展览、举办技术研讨会等方式,提升品牌知名度和美誉度。

Epitex Inc公司的发展小趣事

随着全球环保意识的不断提高,Epitex也积极响应环保号召,将环保理念融入到公司的生产经营中。他们采用环保材料和生产工艺,减少对环境的影响。同时,Epitex还积极参与环保公益活动,推动电子行业的绿色发展。

在可持续发展方面,Epitex也做出了积极努力。他们通过技术创新和产业升级,不断提高资源利用效率和产品附加值。同时,Epitex还注重与供应商和客户的合作,共同推动产业链的可持续发展。

Deutron Electronics Corp公司的发展小趣事

Deutron Electronics Corp的创立之初,就致力于通过技术创新在电子行业中立足。公司创始人是一位资深的电子工程师,他带领研发团队开发出了当时市场上领先的半导体芯片。这一技术突破不仅为公司赢得了第一笔大额订单,也为后续的产品线扩展奠定了坚实的基础。随着技术的不断进步,Deutron Electronics Corp逐渐在半导体领域树立了技术领先的形象。

问答坊 | AI 解惑

大家有没有“温室智能控制系统”毕业设计

大家有没有“温室智能控制系统”毕业设计 共享一下 控制量(温度,湿度,光照,co2控制,土壤,水分)…

查看全部问答>

PROTEL 99se 中走线的问题

大家好:我的protel 99se中画pcb走线时可以走15度,30度等等好像是任意角度,我不想这样改怎么设置? 正常的是可以走45度,90度,135度 谢谢大家哦!…

查看全部问答>

关于端口复用的问题(ds1302和1602)

想用ds1302和1602做一个实时时钟,但ds1302的3个口接在P1,而1602的8位数据输入也用的是P1,请问能这样能做到吗?谢谢…

查看全部问答>

简单问题:如何获取进程空间虚拟地址的实际的物理地址?

反之,如果把一个物理地址映射到进程空间虚拟地址?不是MMU那个虚拟地址…

查看全部问答>

有电力项目方面经验的朋友请进!

哪位有电力方面课题或是中小型的项目,可以谈谈想法,现成的项目也可以,我公司需要购买或者开发。希望我们能合作。我的QQ号31721739 …

查看全部问答>

高分求高手相助, 无法连通电信WAP网关

{                 }else                 {                         ConnMgrSetCon…

查看全部问答>

各位同仁,我还要继续下去吗

本人是做单片机工作的,08年金融危机被公司CUT了…

查看全部问答>

关于系统初始化

系统初始化时,怎么根据实际使用振荡器?如内部振荡器1和2。…

查看全部问答>

Verilog+HDL数字设计与综合(第二版)

设计前端的设计很不错的一本书…

查看全部问答>

你对LED恒流芯片了解多少?三代非隔离LED恒流芯片介绍

第一代LED恒流芯片:此类芯片主要的技术特点是基于固定频率的PWM芯片(如UC384X等),通过降低电感纹波电流,固定电感峰值电流来实现恒流。但由于开关频率固定,为避免次谐振荡,它的最大占空比只能用到50%,其应用范围就很受限了;再者由于电感纹 ...…

查看全部问答>