ARM 2440 naked implementation of electronic clock

Publisher:LianaiLatest update time:2019-10-30 Source: 51heiKeywords:ARM Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

//===================================================================

// File Name : 2440lib.c

// Function  : S3C2410 PLL,Uart, LED, Port Init

// Date      : March 20, 2002

// Version   : 0.0

// History

//   0.0 : Programming start (February 20,2002) -> SOP

//===================================================================


#include "def.h"

#include "option.h"

#include "2440addr.h"

#include "2440lib.h"

#include "2440slib.h" 


#include

#include

#include

#include

#include


extern char Image$RW$Limit[];

void *mallocPt=Image$RW$Limit;


//***************************[ SYSTEM ]***************************************************

void Delay(int time)

{

        U32 val = (PCLK>>3)/1000-1;

        

        rTCFG0 &= ~(0xff<<8);

        rTCFG0 |= 3<<8;                        //prescaler = 3+1

        rTCFG1 &= ~(0xf<<12);

        rTCFG1 |= 0<<12;                //mux = 1/2


        rTCNTB3 = val;

        rTCMPB3 = val>>1;                // 50%

        rTCON &= ~(0xf<<16);

        rTCON |= 0xb<<16;                //interval, inv-off, update TCNTB3&TCMPB3, start timer 3

        rTCON &= ~(2<<16);                //clear manual update bit

        while(time--) {

                while(rTCNTO3>=val>>1);

                while(rTCNTO3>1);

        };

}


//***************************[ PORTS ]****************************************************

void Port_Init0(void)

{

    //CAUTION:Follow the configuration order for setting the ports. 

    // 1) setting value(GPnDAT) 

    // 2) setting control register  (GPnCON)

    // 3) configure pull-up resistor(GPnUP)  


    //32bit data bus configuration  

    //*** PORT A GROUP

    //Ports  : GPA22 GPA21  GPA20 GPA19 GPA18 GPA17 GPA16 GPA15 GPA14 GPA13 GPA12  

    //Signal : nFCE nRSTOUT nFRE   nFWE  ALE   CLE  nGCS5 nGCS4 nGCS3 nGCS2 nGCS1 

    //Binary :  1     1      1  , 1   1   1    1   ,  1     1     1     1

    //Ports  : GPA11   GPA10  GPA9   GPA8   GPA7   GPA6   GPA5   GPA4   GPA3   GPA2   GPA1  GPA0

    //Signal : ADDR26 ADDR25 ADDR24 ADDR23 ADDR22 ADDR21 ADDR20 ADDR19 ADDR18 ADDR17 ADDR16 ADDR0 

    //Binary :  1       1      1      1   , 1       1      1      1   ,  1       1     1      1         

    rGPACON = 0x7fffff; 


    //**** PORT B GROUP

    //Ports  : GPB10    GPB9    GPB8    GPB7    GPB6     GPB5    GPB4   GPB3   GPB2     GPB1      GPB0

    //Signal : nXDREQ0 nXDACK0 nXDREQ1 nXDACK1 nSS_KBD nDIS_OFF L3CLOCK L3DATA L3MODE nIrDATXDEN Keyboard

    //Setting: INPUT  OUTPUT   INPUT  OUTPUT   INPUT   OUTPUT   OUTPUT OUTPUT OUTPUT   OUTPUT    OUTPUT 

    //Binary :   00  ,  01       00  ,   01      00   ,  01       01  ,   01     01   ,  01        01  

    rGPBCON = 0x044555;

    rGPBUP  = 0x7ff;     // The pull up function is disabled GPB[10:0]


    //*** PORT C GROUP for youlong

    //Ports  : GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8  GPC7   GPC6   GPC5 GPC4 GPC3  GPC2  GPC1 GPC0

    //Signal : VD7   VD6   VD5   VD4   VD3   VD2   VD1  VD0 LCDVF2 LCDVF1 LCDVF0 VM VFRAME VLINE VCLK LEND  

    //Binary :  10   10  , 10    10  , 10    10  , 10   10  , 10     10  ,  10   10 , 10     10 , 10   10

    rGPCCON = 0xaaaaaaaa;       

    rGPCUP  = 0xffff;     // The pull up function is disabled GPC[15:0] 

    


    //*** PORT D GROUP

    //Ports  : GPD15 GPD14 GPD13 GPD12 GPD11 GPD10 GPD9 GPD8 GPD7 GPD6 GPD5 GPD4 GPD3 GPD2 GPD1 GPD0

    //Signal : VD23  VD22  VD21  VD20  VD19  VD18  VD17 VD16 VD15 VD14 VD13 VD12 VD11 VD10 VD9  VD8

    //Binary : 10    10  , 10    10  , 10    10  , 10   10 , 10   10 , 10   10 , 10   10 ,10   10

    rGPDCON = 0xaaaaaaaa;       

    rGPDUP  = 0xffff;     // The pull up function is disabled GPD[15:0]


    //*** PORT E GROUP

    //Ports  : GPE15  GPE14 GPE13   GPE12   GPE11   GPE10   GPE9    GPE8     GPE7  GPE6  GPE5   GPE4  

    //Signal : IICSDA IICSCL SPICLK SPIMOSI SPIMISO SDDATA3 SDDATA2 SDDATA1 SDDATA0 SDCMD SDCLK IN 

    //Binary :  10     10  ,  10      10  ,  10      10   ,  10      10   ,   10    10  , 10     00  ,     

    //-------------------------------------------------------------------------------------------------------

    //Ports  :  GPE3   GPE2  GPE1    GPE0    

    //Signal :  IN     IN    IN      IN  

    //Binary :  00     00  ,  00      00 

    //rGPECON = 0xaaaaaaaa;       

    //rGPEUP  = 0xffff;     // The pull up function is disabled GPE[15:0]

        rGPECON = 0xaaaaa800; // For added AC97 setting      

    rGPEUP  = 0xffff;     


     //*** PORT F GROUP

    //Ports  : GPF7   GPF6   GPF5   GPF4      GPF3     GPF2  GPF1   GPF0

    //Signal : nLED_8 nLED_4 nLED_2 nLED_1 nIRQ_PCMCIA EINT2 KBDINT EINT0

    //Setting: Output Output Output Output    EINT3    EINT2 EINT1  EINT0

    //Binary :  01      01 ,  01     01  ,     10       10  , 10     10

    rGPFCON = 0x55aa;

    rGPFUP  = 0xff;     // The pull up function is disabled GPF[7:0]


    //*** PORT G GROUP

    //Ports  : GPG15 GPG14 GPG13 GPG12 GPG11    GPG10    GPG9     GPG8     GPG7      GPG6    

    //Signal : nYPON ​​YMON nXPON XMON EINT19 DMAMODE1 DMAMODE0 DMASTART KBDSPICLK KBDSPIMOSI

    //Setting: nYPON  YMON nXPON XMON  EINT19  Output   Output   Output   SPICLK1    SPIMOSI1

    //Binary :   11    11 , 11    11  , 10      01    ,   01       01   ,    11         11

    //-----------------------------------------------------------------------------------------

    //Ports  :    GPG5       GPG4    GPG3    GPG2    GPG1    GPG0    

    //Signal : KBDSPIMISO LCD_PWREN EINT11 nSS_SPI IRQ_LAN IRQ_PCMCIA

    //Setting:  SPIMISO1  LCD_PWRDN EINT11   nSS0   EINT9    EINT8

    //Binary :     11         11   ,  10      11  ,  10        10

    rGPGCON = 0xff95ffba;

    rGPGUP  = 0xffff;    // The pull up function is disabled GPG[15:0]


    //*** PORT H GROUP

    //Ports  :  GPH10    GPH9  GPH8 GPH7  GPH6  GPH5 GPH4 GPH3 GPH2 GPH1  GPH0 

    //Signal : CLKOUT1 CLKOUT0 UCLK nCTS1 nRTS1 RXD1 TXD1 RXD0 TXD0 nRTS0 nCTS0

    //Binary :   10   ,  10     10 , 11    11  , 10   10 , 10   10 , 10    10

    rGPHCON = 0x2afaaa;

    rGPHUP  = 0x7ff;    // The pull up function is disabled GPH[10:0]


        // Added for S3C2440X, DonGo

        //*** PORT J GROUP

    //Ports  : GPJ12   GPJ11       GPJ10    GPJ9    GPJ8      GPJ7      GPJ6      GPJ5      GPJ4      GPJ3      GPJ2      GPJ1     GPJ0 

    //Signal : CAMRESET CAMPCLKOUT CAMHREF CAMVSYNC CAMPCLKIN CAMDAT[7] CAMDAT[6] CAMDAT[5] CAMDAT[4] CAMDAT[3] CAMDAT[2] CAMDAT[1] CAMDAT[0] 

    //Binary :   10      10       10        10       10        10        10        10       10         10        10        10      10

    rGPJCON = 0x02aaaaaa;

    rGPJUP  = 0x1fff;    // The pull up function is disabled GPH[10:0]

    

    //External interrupt will be falling edge triggered. 

    rEXTINT0 = 0x22222222;    // EINT[7:0]

    rEXTINT1 = 0x22222222;    // EINT[15:8]

    rEXTINT2 = 0x22222222;    // EINT[23:16]

}


void Port_Init(void)

{

    //CAUTION:Follow the configuration order for setting the ports. 

    // 1) setting value(GPnDAT) 

    // 2) setting control register  (GPnCON)

    // 3) configure pull-up resistor(GPnUP)  


    //32bit data bus configuration  

    //*** PORT A GROUP

    //Ports  : GPA22 GPA21  GPA20 GPA19 GPA18 GPA17 GPA16 GPA15 GPA14 GPA13 GPA12  

    //Signal : nFCE nRSTOUT nFRE   nFWE  ALE   CLE  nGCS5 nGCS4 nGCS3 nGCS2 nGCS1 

    //Binary :  1     1      1  , 1   1   1    1   ,  1     1     1     1

    //Ports  : GPA11   GPA10  GPA9   GPA8   GPA7   GPA6   GPA5   GPA4   GPA3   GPA2   GPA1  GPA0

    //Signal : ADDR26 ADDR25 ADDR24 ADDR23 ADDR22 ADDR21 ADDR20 ADDR19 ADDR18 ADDR17 ADDR16 ADDR0 

    //Binary :  1       1      1      1   , 1       1      1      1   ,  1       1     1      1         

    rGPACON = 0x7fffff; 


    //**** PORT B GROUP

    //Ports  : GPB10    GPB9    GPB8    GPB7    GPB6     GPB5    GPB4   GPB3   GPB2     GPB1      GPB0

    //Signal : nXDREQ0 nXDACK0 nXDREQ1 nXDACK1 nSS_KBD nDIS_OFF L3CLOCK L3DATA L3MODE nIrDATXDEN Keyboard

    //Setting: INPUT  OUTPUT   INPUT  OUTPUT   INPUT   OUTPUT   OUTPUT OUTPUT OUTPUT   OUTPUT    OUTPUT 

    //Binary :   00  ,  01       00  ,   01      00   ,  01       01  ,   01     01   ,  01        01  

    //rGPBCON = 0x000150;(youlong)

    rGPBCON = 0x015550;

    rGPBUP  = 0x7ff;     // The pull up function is disabled GPB[10:0]


    //*** PORT C GROUP for youlong

    //Ports  : GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8  GPC7   GPC6   GPC5 GPC4 GPC3  GPC2  GPC1 GPC0

    //Signal : VD7   VD6   VD5   VD4   VD3   VD2   VD1  VD0 LCDVF2 LCDVF1 LCDVF0 VM VFRAME VLINE VCLK LEND  

    //Binary :  10   10  , 10    10  , 10    10  , 10   10  , 10     10  ,  10   10 , 10     10 , 10   10

    //rGPCCON = 0xaaaaaaaa;       

    //rGPCUP  = 0xffff;     // The pull up function is disabled GPC[15:0] 

    

    //*** PORT C GROUP

    //Ports  : GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8  GPC7   GPC6   GPC5 GPC4 GPC3  GPC2  GPC1 GPC0

    //Signal : VD7   VD6   VD5   VD4   VD3   VD2   VD1  VD0 LCDVF2 LCDVF1 LCDVF0 VM VFRAME VLINE VCLK LEND  

    //Binary :  10   10  , 10    10  , 10    10  , 10   01  , 01     01  ,  01   10 , 10     10 , 10   10

    rGPCCON = 0xaaa956aa;       

    rGPCUP  = 0xffff;     // The pull up function is disabled GPC[15:0]     


    //*** PORT D GROUP

    //Ports  : GPD15 GPD14 GPD13 GPD12 GPD11 GPD10 GPD9 GPD8 GPD7 GPD6 GPD5 GPD4 GPD3 GPD2 GPD1 GPD0

    //Signal : VD23  VD22  VD21  VD20  VD19  VD18  VD17 VD16 VD15 VD14 VD13 VD12 VD11 VD10 VD9  VD8

    //Binary : 10    10  , 10    10  , 10    10  , 10   10 , 10   10 , 10   10 , 10   10 ,10   10

    rGPDCON = 0xaaaaaaaa;       

    rGPDUP  = 0xffff;     // The pull up function is disabled GPD[15:0]


    //*** PORT E GROUP

    //Ports  : GPE15  GPE14 GPE13   GPE12   GPE11   GPE10   GPE9    GPE8     GPE7  GPE6  GPE5   GPE4  

    //Signal : IICSDA IICSCL SPICLK SPIMOSI SPIMISO SDDATA3 SDDATA2 SDDATA1 SDDATA0 SDCMD SDCLK IN 

    //Binary :  10     10  ,  10      10  ,  10      10   ,  10      10   ,   10    10  , 10     00  ,     

    //-------------------------------------------------------------------------------------------------------

[1] [2] [3]
Keywords:ARM Reference address:ARM 2440 naked implementation of electronic clock

Previous article:Samsung 2440 ARM initialization
Next article:ARM development steps: After reading this, the development ideas will be clearer

Recommended ReadingLatest update time:2024-11-16 09:50

Interpretation of the Ethernet interface circuit of the ARM7 core microcontroller LPC2148
  The embedded main control module uses the microcontroller LPC2148 based on the ARM7TDMI-S core, which has a very high degree of integration. It has 40kB of on-chip static RAM and 512kB of on-chip Flash memory, and integrates ADC, DAC converter, watchdog, real-time clock RTC, 2 UARTs, 2 I2Cs, SPI and other bus interf
[Microcontroller]
Interpretation of the Ethernet interface circuit of the ARM7 core microcontroller LPC2148
ARM working mode and big-endian and small-endian storage modes
1. Memory format (word alignment): The Arm architecture treats memory as a linear combination of bytes starting from address zero. The first stored word (32-bit) data is placed from byte zero to byte three, and the second stored word data is placed from byte four to byte seven, arranged one by one. As a 32-bit micropr
[Microcontroller]
ARM working mode and big-endian and small-endian storage modes
Lesson 010 Mastering the Jz2440_ARM chip clock system
Section 001_S3C2440 Clock Architecture S3C2440 is a System On Chip (SOC), which has not only a CPU but also a bunch of peripherals on the chip. As for what peripherals are available, you can check the reference manual. In the first chapter of the S3C2440 reference manual, PRODUCT OVERVIEW, there is a BLOCK DIAGRAM d
[Microcontroller]
Lesson 010 Mastering the Jz2440_ARM chip clock system
Intel X86 and ARM's battle for the "architecture king"
Currently, Intel's X86 and ARM architectures occupy the mainstream market of the global microprocessor instruction set architecture. Among them, Intel's X86 dominates high-performance and high-power consumption fields such as computers and servers, while the ARM architecture almost monopolizes 90% of mobile communicat
[Mobile phone portable]
Arm's IPO has been 10 times oversubscribed or may close early
According to people familiar with the matter, Arm Holdings Ltd. The initial public offering (IPO) has been 10 times oversubscribed, and banks plan to stop accepting subscriptions by Tuesday afternoon. SoftBank Group Corp.'s Arm will end subscriptions a day early on Tuesday, but still plans to price on Wednesday, said
[Semiconductor design/manufacturing]
ARM NEON Programming Series 2 - Basic Instruction Set
Preface This series of blog posts is used to introduce the NEON instruction optimization under ARM CPU. Blog post github address: github Related code github address: github NEON instruction set Most mainstream compilers that support ARM CPU as target platform support NEON instructions. You can use NEON by embedding
[Microcontroller]
Holtek's new generation Cortex-M0+ brushless DC motor dedicated MCU
Holtek has launched the new generation of Arm® Cortex®-M0+ brushless DC motor control dedicated single chip HT32F65232, which is suitable for Hall sensor or Sensor-less 1-shunt FOC and square wave Sensorless control. The frequency can reach up to 60MHz, with a wide voltage operation range of 2.5V~5.5V. The system vo
[Microcontroller]
6. Get to know the ARM family
Let’s look at a picture first: Figure 1-1: Figure 1-1 It seems that the above are all related to ARM, but what are they respectively? In fact, the above nouns can be divided into three categories: Chip: 6410, 210, 2440. ARM core: arm11, A8, arm9 Instruction archit
[Microcontroller]
6. Get to know the ARM family
Latest Microcontroller Articles
  • Download from the Internet--ARM Getting Started Notes
    A brief introduction: From today on, the ARM notebook of the rookie is open, and it can be regarded as a place to store these notes. Why publish it? Maybe you are interested in it. In fact, the reason for these notes is ...
  • Learn ARM development(22)
    Turning off and on interrupts Interrupts are an efficient dialogue mechanism, but sometimes you don't want to interrupt the program while it is running. For example, when you are printing something, the program suddenly interrupts and another ...
  • Learn ARM development(21)
    First, declare the task pointer, because it will be used later. Task pointer volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • Learn ARM development(20)
    With the previous Tick interrupt, the basic task switching conditions are ready. However, this "easterly" is also difficult to understand. Only through continuous practice can we understand it. ...
  • Learn ARM development(19)
    After many days of hard work, I finally got the interrupt working. But in order to allow RTOS to use timer interrupts, what kind of interrupts can be implemented in S3C44B0? There are two methods in S3C44B0. ...
  • Learn ARM development(14)
  • Learn ARM development(15)
  • Learn ARM development(16)
  • Learn ARM development(17)
Change More Related Popular Components
Guess you like

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号