The I2C-bus specification


1 PREFACE (서문)


1.1 Version 1.0 - 1992

This version of the 1992 I2C-bus specification includes the following modifications:

· Programming of a slave address by software has been omitted.

  The realization of this feature is rather complicated and has not been used.

· The “low-speed mode” has been omitted. This mode is, in fact, a subset of the total I2C-bus specification and need not be specified explicitly.

· The Fast-mode is added. This allows a fourfold increase of the bit rate up to 400 kbit/s. Fast-mode devices are downwards compatible i.e. they can be used in a 0 to 100 kbit/s I2C-bus system.

· 10-bit addressing is added. This allows 1024 additional slave addresses.

· Slope control and input filtering for Fast-mode devices is specified to improve the EMC behaviour.

NOTE: Neither the 100 kbit/s I2C-bus system nor the 100 kbit/s devices have been changed.


1.2 Version 2.0 - 1998

The I2C-bus has become a de facto world standard that is now implemented in over 1000 different ICs and licensed to more than 50 companies. Many of today’s applications, however, require higher bus speeds and lower supply voltages. This updated version of the I2C-bus specification meets those requirements and includes the following modifications:

· The High-speed mode (Hs-mode) is added. This allows an increase in the bit rate up to 3.4 Mbit/s. Hs-mode devices can be mixed with Fast- and Standard-mode devices on the one I2C-bus system with bit rates from 0 to 3.4 Mbit/s.

· The low output level and hysteresis of devices with a supply voltage of 2 V and below has been adapted to meet the required noise margins and to remain compatible with higher supply voltage devices.

· The 0.6 V at 6 mA requirement for the output stages of Fast-mode devices has been omitted.

· The fixed input levels for new devices are replaced by bus voltage-related levels. 

· Application information for bi-directional level shifter is added.


1.3 Version 2.1 - 2000

Version 2.1 of the I2C-bus specification includes the following minor modifications:

· After a repeated START condition in Hs-mode, it is possible to stretch the clock signal SCLH (see Section 13.2 and Figs 22, 25 and 32). · Some timing parameters in Hs-mode have been relaxed (see Tables 6 and 7).




2 THE I2C-BUS BENEFITS DESIGNERS AND MANUFACTURERS


In consumer electronics, telecommunications and industrial electronics, there are often many similarities between seemingly unrelated designs. For example, nearly every system includes:

· Some intelligent control, usually a single-chip microcontroller

· General-purpose circuits like LCD drivers, remote I/O ports, RAM, EEPROM, or data converters

· Application-oriented circuits such as digital tuning and signal processing circuits for radio and video systems, or DTMF generators for telephones with tone dialling. To exploit these similarities to the benefit of both systems designers and quipment manufacturers, as well as to maximize hardware efficiency and circuit simplicity, Philips developed a simple bi-directional 2-wire bus for efficient inter-IC control. This bus is called the Inter IC or I2C-bus.

At present, Philips’ IC range includes more than 150 CMOS and bipolar I2C-bus compatible types for performing functions in all three of the previously mentioned categories. All I2C-bus compatible devices incorporate an on-chip interface which allows them to communicate directly with each other via the I2C-bus. This design concept solves the many interfacing problems encountered when designing digital control circuits. 

Here are some of the features of the I2C-bus:

· Only two bus lines are required; a serial data line (SDA) and a serial clock line (SCL)

· Each device connected to the bus is software addressable by a unique address and simple master/slave relationships exist at all times; masters can operate as master-transmitters or as master-receivers

· It’s a true multi-master bus including collision detection and arbitration to prevent data corruption if two or more masters simultaneously initiate data transfer · Serial, 8-bit oriented, bi-directional data transfers can be made at up to 100 kbit/s in the Standard-mode, up to 400 kbit/s in the Fast-mode, or up to 3.4 Mbit/s in the High-speed mode

· On-chip filtering rejects spikes on the bus data line to preserve data integrity

· The number of ICs that can be connected to the same bus is limited only by a maximum bus capacitance of 400 pF.

Figure 1 shows two examples of I2C-bus applications.


 2.1 Designer benefits

I2C-bus compatible ICs allow a system design to rapidly progress directly from a functional block diagram to a prototype. Moreover, since they ‘clip’ directly onto the I2C-bus without any additional external interfacing, they allow a prototype system to be modified or upgraded simply by ‘clipping’ or ‘unclipping’ ICs to or from the bus.

Here are some of the features of I2C-bus compatible ICs which are particularly attractive to designers:

· Functional blocks on the block diagram correspond with the actual ICs; designs proceed rapidly from block

diagram to final schematic.

· No need to design bus interfaces because the I2C-bus interface is already integrated on-chip.

· Integrated addressing and data-transfer protocol allow systems to be completely software-defined

· The same IC types can often be used in many different applications

· Design-time reduces as designers quickly become familiar with the frequently used functional blocks represented by I2C-bus compatible ICs

· ICs can be added to or removed from a system without affecting any other circuits on the bus

· Fault diagnosis and debugging are simple; malfunctions can be immediately traced

· Software development time can be reduced by assembling a library of reusable software modules.

In addition to these advantages, the CMOS ICs in the I2C-bus compatible range offer designers special features which are particularly attractive for portable equipment and battery-backed systems.

They all have:

· Extremely low current consumption

· High noise immunity

· Wide supply voltage range

· Wide operating temperature range.


2.2 Manufacturer benefits


I2C-bus compatible ICs don’t only assist designers, they also give a wide range of benefits to equipment

manufacturers because:

· The simple 2-wire serial I2C-bus minimizes interconnections so ICs have fewer pins and there are

not so many PCB tracks; result - smaller and less expensive PCBs

· The completely integrated I2C-bus protocol eliminates the need for address decoders and other ‘glue logic’

· The multi-master capability of the I2C-bus allows rapid testing and alignment of end-user equipment via external connections to an assembly-line

· The availability of I2C-bus compatible ICs in SO (smalloutline), VSO (very small outline) as well as DIL packages reduces space requirements even more.

These are just some of the benefits. In addition, I2C-bus compatible ICs increase system design flexibility by allowing simple construction of equipment variants and easy upgrading to keep designs up-to-date. In this way, an entire family of equipment can be developed around abasic model. Upgrades for new equipment, or enhanced-feature models (i.e. extended memory, remote control, etc.) can then be produced simply by clipping the appropriate ICs onto the bus. If a larger ROM is needed,

it’s simply a matter of selecting a micro-controller with a larger ROM from our comprehensive range. As new ICs supersede older ones, it’s easy to add new features to equipment or to increase its performance by simply unclipping the outdated IC from the bus and clipping on its successor.


3 INTRODUCTION TO THE I2C-BUS SPECIFICATION

For 8-bit oriented digital control applications, such as those requiring microcontrollers, certain design criteria can be

established:

· A complete system usually consists of at least one microcontroller and other peripheral devices such as memories and I/O expanders

· The cost of connecting the various devices within the system must be minimized 

· A system that performs a control function doesn’t require high-speed data transfer 

· Overall efficiency depends on the devices chosen and the nature of the interconnecting bus structure.

To produce a system to satisfy these criteria, a serial bus structure is needed. Although serial buses don’t have the

throughput capability of parallel buses, they do require less wiring and fewer IC connecting pins. However, a bus is not merely an interconnecting wire, it embodies all the formats and procedures for communication within the system.

Devices communicating with each other on a serial bus must have some form of protocol which avoids all possibilities of confusion, data loss and blockage of information. Fast devices must be able to communicate with slow devices. The system must not be dependent on the devices connected to it, otherwise modifications or improvements would be impossible. 

A procedure has also to be devised to decide which device will be in control of the bus and when. And, if different devices with different clock speeds are connected to the bus, the bus clock source must be defined. All these criteria are involved in

the specification of the I2C-bus.


결론적으로 2000년도에 발표된 2.1버전의 특징만 아시면 됩니다.

간단하게 요약하자면 ,

-오직 2가닥의 와이어만 필요합니다 (SDA-Serial Data Line, SCL-Serial Clock Line) 또한 인터페이스는 칩에 내장되어있기에 별다른 디자인이 필요하지 않습니다.

-SCL은 마스터에서 클럭소스를 OUT하는 선이며 SDA는 SCL의 클럭에 완벽히 동기화되어 실제 data가 송수신됩니다.

-Bus에 연결된 master와 slave는 소프트웨어적으로 adress접근이 가능하다면 완벽하게 연결되며 제어가 됩니다.

-다수의 마스터가 연결될수가 있으며 장치간 충돌이 있어도 감지가 가능합니다. 또한 2개이상의 마스터를 초기화해도 통신이 가능합니다.

-시리얼 8비트 데이터통신은 일반모드에서 100kbps의 속도를 FAST모드에서 200kbps, Highspeed모드에서 3.4Mbps의 속도를 가집니다.

-단일칩 필러터링으로 버스에서 발생할수있는 노이즈를 차단할수있습니다

-최대 연결이 가능한 버스는 커패시턴스가 400pF이 넘지않는다면 IC를 계속 연결할수있습니다. ATmega를 예로들면 최대 연결이 가능한 IC는 128개로 제한하고 있습니다. 이는 주소값이 7bit 가지므로 2^7=128 의 이론값에서 나온것입니다.


일단 이정도 하시면 사용에 문제는 없습니다.

ISR(INT0_vect){}

ISR(INT1_vect){}

ISR(INT2_vect){}

ISR(INT3_vect){}

ISR(INT4_vect){}

ISR(INT5_vect){}

ISR(INT6_vect){}

ISR(INT7_vect){}

 

ISR(TIMER0_OVF_vect){}

ISR(TIMER0_COMP_vect){}



ISR(TIMER1_OVF_vect){}

ISR(TIMER1_CAPT_vect){}

ISR(TIMER1_COMPA_vect){}

ISR(TIMER1_COMPB_vect){}

ISR(TIMER1_COMPC_vect){}



ISR(TIMER2_OVF_vect){}

ISR(TIMER2_COMP_vect){}



ISR(TIMER3_OVF_vect){}

ISR(TIMER3_CAPT_vect){}

ISR(TIMER3_COMPA_vect){}

ISR(TIMER3_COMPB_vect){}

ISR(TIMER3_COMPC_vect){}


ISR(USART0_RX_vect){}

ISR(USART0_UDRE_vect){}

ISR(USART0_TX_vect){}


ISR(USART1_RX_vect){}

ISR(USART1_UDRE_vect){}

ISR(USART1_TX_vect){}



ISR(ADC_vect){}

ISR(ANALOG_COMP_vect){}

ISR(EE_READY_vect){}

ISR(SPI_STC_vect){}

ISR(TWI_vect){}

ISR(SPM_READY_vect){}

모든 물질은 원자로 이루어져 있다.

원자는 원소의 성질을 유지하는 원소의 가장 작은 입자이다.

모든 원자는 전자,양자,중성자로 구성되어있다. 그리고 원자내에서 어떤 전자의 구성은 도체,반도체 물질이 전류를 어떻게 잘 전도시키는지를 결정하는 핵심요소이다. 


[전자회로_PEARSON Electronic Devices] 1. 반도체이론  참고바랍니다.


....중략


따라서 전자는 음의 전하를 나타내는 가장 작은 입자이다. 물질에 과잉전자가 존재하면 순수전하는 음이 되며 전자가 부족하면 양이된다.


양자의 전하와 전자의 전하는 크기가 같고 부호는 반대이다. 이때 전하란? 전자의 과잉또는 부족으로 존재하는 물질의 전기적인 특성이다. 전자 =/= 전하, 같지 않다! 오해하지 않기를 바랍니다. (즉, 전자가 더 많으냐? 적으냐로 구분하는 말입니다)

 중성원자의 경우로 생각해봅시다. 중성원자는 전자와 양자의 수가 같으며 순수전하는 0 입니다. 만약 어떤 가전자가 원자에서 떨어지면, 그 원자는 순수 양전하(전자보다 양자의 수가 많음)로 남게 되고 양이온 된다. 그래서 양이온은 순수양전하를 갖는 원자, 혹은 원자들의 그룹으로 정의된다. 반대로 만약 원자가 가장 바깥쪽 전자각(최외각쉘)에 추가로 한개의 전자를 얻게 된다면 이 원자는 순수 음전하를 갖게되고 음이온이 된다. 그래서 음이온이란 순수 음전하를 갖는 원자 혹은 원자들의 그룹이라고 말할수 있다.


전하는 Q로 나타내며, 서로 반대극성의 전하는 서로 당기고. 같은 극성의 전하는 서로 밀어낸다. 이러한 힘을 전장 (electric field)이라 한다.


[쿨롱의 법칙]


두점의 소소 전하사이에 힘이 존재한다. 이 힘은 두 전하의 곱에 직접적으로 비례하며 두 전하사이의 거리의 제곱에 반비례한다.


전하는 쿨롱으로 측정되고 기호는 C로 표현한다.

1C쿨롱은 = 6.25 x 10(18승) 개의 전자가 갖는 총 전하이다.

한개의 전자는 1.6 x 10(-19승) C의 전하를 갖는다. 

만약 몇개의 전자들이 주어진다면 이들의 전체 전하는 아래의 공식으로 구할수가 있다.


Q = (전자들) / (6.25 x 10^18)



[전압]


양전하와 음전하사이에는 끌어당기는 힘이 작용한다. 이러한 힘을 극복하고 전하를 주어진 거리만큼 떼어 움직이기 위해서는 어떠한 양의 에너지가 일의 형태로 작용해야 한다. 그리고 모든 반대 극성의 전하들은 그들 사이의 간격으로 인해 일정한 위치에너지를 갖고 이다. 전하들의 위치에너지의 차를 전위차 혹은 전압이라고 한다.


전압 : 한점에서 다른점까지 1쿨롱의 전하를 이동시키는데 사용되는 에너지가 1J(줄)일때, 1볼트는 두지점간의 전위차이다.


---------------------

전위 [ electric potential , 電位 ]

전위란 전기장 내에서 단위전하가 같는 위치에너지이다. ……

중력장에서와 마찬가지로 전기장 내에서도 (+)전하를 전기장의 반대방향으로 이동시키려면 전기력을 거슬러 일을 해 주어야 한다. 전하를 이동시킬 때 외부에서 전하에 해 준 일만큼 전하는 전기력에 의한 위치에너지를 갖게 된다. 따라서, 수식으로 표현하자면, 전위 V=W/q (W는 일, q는 전하량)가 된다. 전위는 q에 무관한 공간의 함수이다.]

-----------------------


(예제)

10C의 전하를 이동하기 위해서 100J의 에너지가 요구된다. 전압은 얼마인가?


V = W/Q  = 100J / 10C = 1V


DC전압원의 유형 =

1) 전지 : 화학에너지를 직접적으로 전기에너지로 변화하는 형태. 전지를 전하를 저장하는 것이 아니라 오히려 화학적 포텐셜 에너지를 저장하는 형태의 "산화-환원"반응을 이용하는 전압원이다.

2) 연료전지 : 전기 화학에너지를 DC전압으로 직접적으로 변환화는 소자이다. 보통 연료(수소)를 산화(산소)와 결합시키는 형태이다. 또한, 부산물로는 오직 물만을 내기때문에 연료전지가 친환경적에너지라 불리는 이유이다.

3) 태양전지 : 빛에너지가 전기 에너지로 변환되는 광기전력 효과를 이용한 전지이다.

기본적인 동작은 두층의 다른 유형의 반도체물질로 구성되고 이들은 함께 결합되어 접합을 이룬다. 만약 한층이 빛에 노출되면 많은 전자들이 부모원자로부터 이탈하고 접합을 통과할 수있는 충분한 에너지를 얻게 된다. 그리고 이 과정을 통하여 접합의 한쪽에는 음이온이, 다른 한쪽에는 양이온이 형성되어 전위치가 발생한다.


[전류]


앞서 설명한 전압은 전자들이 회로를 통해 이동할수 있도록 에너지를 공급하는 역할을 한다고 하였다. 그리고 전자들의 이런 움직임이 전류이며 전류는 전기회로에서 수행되며 일(J 줄) 이라고 한다.


전류 = 전하가 흐르는 율 (Rate of flow)


도체내에서 전류는 단위시간당 임의의 점을 통과하여 흐르는 전자의 수(전하량)으로 측정된다.


I = Q / t   (I는 암페어(A) 전류를 의미. Q는 쿨롱(C)으로 전자의 전하이며, t는 (초, sec)이다 )


작성중.. 



초보시절 ATmega의 FUSE셋팅을 잘못입력하여 클럭을 죽여버리는경우가 종종 생깁니다.


이런경우 ATmega128에 외부클럭 1Mhz를 Xtal1핀(24)에 인가하면 AVR studio의  퓨즈세팅에 다시 진입할수 있습니다.


결론적으로 인공호흡적은 외부클럭 1Mhz를 어떻게 만들어 낼것인가라는 문제로 귀결됩니다.


1. 만약 펑션제너레이터가 있으시다면 문제는 간단합니다. 그냥 입력하십시요. (GND는 공통으로 물려주십시요) 

2. 다른 정상적인 ATmega128로 타이머/카운터로 1Mhz의 신호가 출력되도록 분주시켜서 클럭을 인가합니다.

3. OSC 1~4Mhz를 구매하여 Atmega128의 Xtal1핀에 인가합니다.



[구구절절설명하는 인공호흡개념..]


인공호흡이라는 개념을 이해하기 위해선 ATmega128과 같은 MCU는 일종의 심장을 가지고 있다고 생각하시면 쉽습니다. MCU의 모든 명령은 클럭과 함께 수행됩니다. 또한 ATmega는 초기 공장에서 출하될때 1Mhz의 내부클럭으로 설정되어 자체내에 가지고있는 오실레이터로 클럭을 만들어서 사용합니다. 문제는 내가 외부적으로 크리스탈/레조레이터나 오실레이터로 아트메가의 XTAL1~2핀에 클럭을 인가해주었때 발생합니다. 외부 클럭인가후 AVR Studio의 FUST셋팅으로 지금 ATmega가 사용할 클럭이 "외부클럭신호이며 어느정도의 속도를 지니고있다"라고 설정을 하게 됩니다만..이때 외부클럭회로가 틀렸거나 설정값과 다른 주파수의 클럭신호가 입력되고 있다면 ATmega는 클럭을 잃어버리고 ISP,JTAG등..프로그램주입 및 PC를 통해서 진입할수가 없게 됩니다. 당연히 진입할때 클럭신호를 사용하여 명령을 주고 받는데 이것이 꼬이게 됨으로 일어나게 되는 현상입니다.  

그래서 공장출하 당시의 클럭주파수인 1Mhz 신호를 XTAL1핀에만 인가하게되면 초기상태의 내부1Mhz OSC로 동작하도록 다시 설정할수가 있으며 이를 우리는 "인공호흡법"과 유사하여 그렇게 부르고 있습니다.


[순서]

1. AVR studio의 FUSE셋팅 설정화면으로 들어갑니다 (당연히 다른 컴파일러도 가능하겠죠?)

2. 죽어있는 ATmega에 외부클럭 1MHz를 인가합니다 (XTAL1핀에만, 입력클럭소소의 GND는 ATmega와 같아야겠죠?)

3. FUSE셋팅의 클럭설정을 내부 1MHz OSC로 동작하도록 설정(Program)하고 외부클럭을 제거합니다.

4. 끝났습니다. 이제 다시 ATmega는 내부클럭을 사용하고있습니다. 다음번에 실수하지 않으시면 됩니다~!


물론 이렇게 하여도..살아나지(?)않는 ATmega도 존재합니다...어쩔수없이..그런경우는..이미 운명하셨다고 생각하시면 됩니다.. 



아래의 자료는 뉴티씨사의 외부 오실레이터를 이용한 ATmega 인공호흡법 자료입니다. 참고하세요.




AVR 기초강좌-인공호흡편.pdf


PNP switching transistor : High-speed switching in industrial applications.









2N3906(PNP).pdf


본문스크랩 http://worynim.tistory.com/entry/Fuse-bit


처음에 퓨즈비트를 공부할때 혹시나 잘못건드리면 망가진다는 얘기에 두근두근 하면서 퓨즈비트를 건드린 기억이 있다.

퓨즈비트는 시스템의 설정을 하는 비트로 mega128 에서는 3바이트로  되어 있다.
클럭을 설정한다거나 워치독타이머를 허용한다거나. jtag 허용한다거나.. 부트로더 관련 설정을 한다거나.. 등등등의 역할 을 한다.

시중의 여러 책들을 보면 아주 잘 설명이 되어 있으므로 이번 글에서는 간단히 설정하는 법을 알아 보자.

우선.. mega128을 기준으로 한다.
퓨즈비트를 설정할때 가장 중요한 것은.. 클럭이다. 클럭설정을 잘 못하면..  아래와 같은 창이 뜨면서 인공호흡을 해야 하는 상황이 온다.

(연결이나 isp 에 아무 문제가 없는데 아래처럼 뜬다면 아주 귀찮다.)



퓨즈비트를 하나하나 보면.. 아래와 같다.
대부분 체크 해제 해 놓고 쓰면 된다.
단 클럭 설정은 꼭 제대로 해야 인식이 안되는 일을 피할 수 있다.


여기서 좀더 부연 설명을 하자면..
JTAG 을 사용한다면.. JTAGEN 을 체크 하면 된다.
단 한가지 알고 있어야 할것은 JTAGEN 을 체크 하면 JTAG 핀들은 io핀으로는 사용할 수 없다.
부트로더를 사용한다면 BOOTSZ와 BOOTRST 를 체크 해주자. 부트로더 안쓴다면 체크해제

CKOPT 는 발진회로의 증폭기 동작 모드를 정하는 것인데..
체크하게 되면 발진회로의 출력전압이 커져서 노이즈에 좀더 강해진다. 단 소비전력이 커진다. 잘 모르겠으면 체크해제 하자.

 BOD 설정은 (Brown Out Detector) 간단히 설명해서 리셋이 걸릴때의 전압을 설정 하는 것이다.
2.7V 와 4.0V 로 설정 가능하다
만약 2.7V로 설정하고 BODEN(BOD허용) 체크하면
시스템 전원이2.7V 이하로 떨어지면 리셋이 걸린다. 특별히 BOD 기능을 사용해야 하는 것이 아니면 체크해제 하자.

중요한 클럭 설정...
Int 로 시작하면 내부클럭
Ext 로 시작하면 외부클럭 이다.
초기값은 내부 1MHz 로 되어 있다.
외부에 크리스탈이나 오실레이터 등을 안달았다면..  빨간 박스 안의 부분에서 설정해 주자.
Start-up time 시스템 클럭이 안정되게 발생할 수 있도록 CPU 가 명령을 수행하기 전에 기다려주는 클럭이다. 그 다음에 시간은 리셋이 걸렸을때 추가되는 시간이다.
잘 모르겠으면 64ms 를 선택하자.


외부에 크리스탈을 달았다면.. Ext. Crystal/Resonator  에서 선택하면 되는데.. 

외부 클럭이
0.9Mhz 이하면 Low Freq 을
0.9Mhz~3Mhz 면 Medium 을 선택
3Mhz 이상이면 High 을 선택하고

레조네이터면 Start-up time: 1K CK 를 선택
크리스탈이면 Start-up time: 16K CK 를 선택
추가 지연 시간은 잘 모르겠으면 64ms 를 선택하자.

잘 모르겠으면 3Mhz 이상의 크리스탈을 달았다면 그냥 가장 아래에 있는 것을 고르시면 별 문제 없다.


참고로 아래와 같은 ISP 모드 에러창이 뜨는 상황과 해결책을 알아보자.  

1. ISP 핀 연결이 정확하게 되어 있지 않을때
선을 반대로 꼽았다던가.. 그러면 저런 에러가 뜬다. 
 >>선을 제대로 연결하자

2. AVR 의 ISP핀(SPI핀)들을 다른 디바이스와 공유할때  
ISP로 다운로드 해야 하는데.. 이 핀에 다른 디바이스(다른 IC 나 저항이나 등등등) 이 물려있다면.. 신호가 충돌해서 저런 에러가 뜰 수 있다. 
>> ISP 신호선은 다이렉트로 다른 디바이스로 가는 신호선들은 1K옴 정도의 직렬저항을 달아보자. 안되면 다른 포트로 옮기자.

3. ISP 주파수가  AVR의 시스템주파수(클럭)의 1/4 이상일때
>> 이상이라면 이하로 설정해 주면 됩니다. 컴파일러에서 설정해 주는 옵션이 있다. (230K 정도로 설정해서 해보자.)

4. 퓨즈비트가 잘못 설정 되어있을 때 
>> 인공호흡을 해서 퓨즈비트를 제대로 설정해 준다.

원문주소 : http://blog.naver.com/unijun/37834300


1. Hexa파일과 BIN파일의 비교

1) 일반적으로 Hexa파일이 BIN파일보다 용량이 크다.

  - Hexa파일은 ASCII로 되어 있으며 BIN파일은 Binary로 되어 있다.

  - Hexa파일은 Address영역이 있으며 Bin파일은 Address영역이 없다.

  - 하지만 경우에 따라선 BIN파일 용량이 더 커질 수 있다. 특히 시작번지가 0번지에서

    멀어질수록 BIN파일이 더 불리하다.

 

2) Hexa파일은 시작Address를 자유롭게 바꿀수 있으나 BIN파일은 그러지 못한다.

  - BIN파일은 0번지부터 시작Adress까지 '00'이나 'FF'로 채워두어야 한다.

  - 중간에 빈 영역이 있을경우에도 BIN파일은 그 영역을 '00'이나 'FF'로 채워두어야

    한다.

 

3) Hexa파일은 자체적으로 Check Sum을 가지고 있어서 통신오류에 대응할 수 있다.

  - BIN파일은 프로그램에서 통신오류에 대응할 수 있도록 제작해 주어야 한다.

 

4) Hexa파일은 다운로드 프로그램을 대부분 공용으로 쓸 수 있다.

  - BIN파일은 0번지부터 시작Adress까지를 없애려면 강제로 시작 Address를 지정해야

    한다.

 

2. Hexa파일의 기본적인 구조



 

1) 시작표시 : ':'로 나타내며 레코드의 시작을 나타낸다.

2) 데이터길이 : 데이터항목의 크기 n을 나타낸다.

3) 주소옵셋 : 시작주소로부터 얼마나 떨어진 부분부터 쓸 것인지를 나타낸다.

4) 데이터타입

  - 00 : Data Record (16/20/32bit Address형식에 모두 사용)

  - 01 : End of File Record (16/20/32bit Address형식에 모두 사용)

  - 02 : Extended Segmented Address Record (20bit Address형식에 사용)

  - 03 : Start Segment Address Record (20bit Address형식에 사용)

  - 02 : Extended Linear Address Record (32bit Address형식에 사용)

  - 03 : Start Linear Address Record (32bit Address형식에 사용)

5) 테이터

  -  데이터타입이 00일때 : 기록할 데이터

  -  데이터타입이 01일때 : 무의미

  -  데이터타입이 02 또는 04일때 : 시작 Address

  -  데이터타입이 03 또는 05일때 : 실행 Address

6) 체크섬 : 모든 레코드 영역을 모두 더한 후에 2의 보수를 취한값

    byte i, 체크섬 = 0 ;
    for ( i = 0 ; i < 레코드길이 ; i ++ ) 체크섬 += 레코드[i] ;
    체크섬 = ~체크섬 + 1 ;

 

3. Hexa파일의 예 (20bit Address형식)

:020000023000CC
:10000000B8FF9F8EC026813E0A004F4D7402EB0957
:1000100026813E08006F527405EA4900A7FFC70613
:10002000BA00FE9FC706B8000000C7060C80FF1983
:10003000C7060C800000C70608800000C7066C8059
:040000032FFE0000CC
:00000001FF

 

각 문장을 해석해 보자.

 

1) : 02 0000 02 3000 CC

  - 02 : 데이터항목이 2바이트이므로 02이다.

  - 0000 : 이 문장은 시작 Address를 설정하는 문장이므로 옵셋이 필요없다.

  - 02 : 데이터가 20비트 형식의 시작주소를 나타낸다는 의미이다.

  - 3000 : 데이터인데 여기서는 데이타타입이 02이므로 시작주소이다.

    단 20비트형식이므로 실제 주소는 4비트 쉬프트되어 0x030000이 된다.

  - CC : 체크섬이다. 02+00+00+02+30+00 = 34, 34의 2의 보수는 CC이다.

 

2) : 10 0000 00 B8FF9F8EC026813E0A004F4D7402EB09 57

  - 10 : 데이터항목이 16바이트이므로 10이다.

  - 0000 : 실제주소는 시작주소+주소옵셋=0x030000+0x0000=0x030000이다.
  - 00 : 데이터가 저장될 코드라는 것을 나타낸다는 의미이다.

  - 뒤의 16바이트 : 실제로 저장될 코드이다.

  - 57 : 체크섬이다.

 

3) 세번째 줄부터 다섯번째 줄까지는 2)번항목과 동일하며 주소만 16씩 증가한다.

 

4) : 04 0000 03 2FFE0000 CC

  - 04 : 데이터항목이 4바이트이다.

  - 0000 : 이문장은 실행 Address를 설정하는 문장이므로 옵셋이 필요없다.

  - 03 : 데이터가 20비트 형식의 실행주소를 나타낸다는 의미이다.

  - 2FFE0000 : 실행주소이며 20비트형식이므로 실제 주소는 4비트 쉬프트되어 0x02FFE0

    이다. 뒤의 0000은 IP(Interupt Priority) 레지스터의 값이다.

  - CC : 체크섬이다.

 

5) : 00 0000 01 FF
  - 00 : 데이터항목이 없다.

  - 0000 : 이문장은 종료를 나타내는 문장이므로 옵셋이 필요없다.

  - 01 : 이 문장이 종료를 나타낸다는 의미이다.

  - FF : 체크섬이다.

'Engineering > C Language' 카테고리의 다른 글

[C언어] 구조체사용하기  (0) 2014.01.16
[C언어] 포인터 사용하기-2  (0) 2014.01.15
[C언어] 포인터 사용하기-1  (0) 2013.11.30
[C언어] 기본적인 개념들  (0) 2013.11.28
[C언어] 평균값필터, moving average  (2) 2012.11.01

::: Switching Regulator, 3A/5V DC,입력4~40V,스위칭주파수52000 ::: 


Datasheet는 카테고리- 아무도가르쳐주지않는-DaTtaSheet(모음)에 있습니다 ^^

정전압 5V가 필요한 디바이스는 참 많은것 같습니다.

또한 5V전압과 동시에 1A이상의 전류가 필요한 시스템도 많구요...

아래의 IC를 사용하시면 최대 3A까지 전류를 안정적으로 뽑아내실수가 있습니다.

방열판을 달아주시면 더 좋구요~ 

--------------------------------------------------------







Features


3.3V, 5V, 12V, 15V, and adjustable output versions

Adjustable version output voltage range, 1.23V to 37V (57V for HV version) ±4% max over line and load conditions

Guaranteed 3A output current

Wide input voltage range, 40V up to 60V for HV version

Requires only 4 external components

52 kHz fixed frequency internal oscillator

TTL shutdown capability, low power standby mode

High efficiency

Uses readily available standard inductors

Thermal shutdown and current limit protection

P+ Product Enhancement tested

 


Applications


Simple high-efficiency step-down (buck) regulator

Efficient pre-regulator for linear regulators

On-card switching regulators

Positive to negative converter (Buck-Boost)

 


Ordering Information


Package Type : TO-220

Operating Temperature Range : -40℃ to +125℃









Datasheet는 카테고리- 아무도가르쳐주지않는-DaTtaSheet(모음)에 있습니다 ^^

보통 3.3V를 많이 쓰시진 않지만..간혹가다 몇종류의 센서나 블루투스 모듈 전원으로 필요할때가 있습니다.

이럴때 5V를 인가해버리면 해당 IC는 곧 운명할것입니다..ㅠㅠ 

귀찮더라도 반드시 입력전압을 지켜서 사용하시기 바랍니다.

아래는 대표적으로 많이 사용하는 전원회로입니다.








Features


Output Current up to 1 A

Low Dropout Voltage ( 700mV at 1A Output Current )

Three Terminal Adjustable or Fixed 1.5V, 1.8V, 2.5V, 2.85V, 3.0V, 3.3V, 5.0V

2.85V Device for SCSI-II Active Terminator

0.04% Line Regulaion, 0.1% Load Regulation

Very Low Quiescent Current

Internal Current andTerminal Limit

Logic-Controlled Electronics Shutdown

Surface Mount Package SOT-223 & TO-263 (D2-Pack)

100% Thermal Limit Burn-In

 




Applications


Active SCSI Terminators

Portable/Plan Top/Notebook Computers

High Efficiency Linear Regulators

SMPS Post Regulators

Mother B/D Clock Supplies

Disk Drives

Battery Chargers

 




Ordering Information


Package Type : SOT-223

Operating Temperature Range : 0℃ to +125℃

7~40V의 입력으로 깔끔하게 5V를 만들어주는 IC입니다 ^^


물론 인덕터와 대용량(?) 커패시터를 귀찮게 달아줘야해서 7805를 쓰겠다는 분이 계시겠지만!!


발열량과 효율성, 그리고 출력전류로 따져보았을때! LM2576T를 안쓰실수가 없을겁니다 ^^


데이터시트는 아래에 있습니다! 





LM2576T-5V.pdf


+ Recent posts