레이블이 H/W인 게시물을 표시합니다. 모든 게시물 표시
레이블이 H/W인 게시물을 표시합니다. 모든 게시물 표시

2018년 2월 26일 월요일

Silicon Lab Download Warning message

Silicon Laboratories 에서 build 된 hex 파일을 다운로드 할 때 Warning message

Warning! An attempt was made to modify address 2200 which is restricted!
Continue download?

말 그대로 수정이 금지된 메모리 주소인 2200 을 수정하려고 한다는 이미이며

실제 사용 가능하지 않는 메모리 영역에 쓰려고 할 때 이 문제가 발생 하였다.

구체적으로는 어떤 상황이었나면
1. C8051F582(64k flash) 에서 사용하던 코드를 C8051F547(8k flash) 에서 사용하려고 해서 위 Warning이 떴고 실제 Code영역의 크기가 10k 를 넘었다.
2. 프로그램의 버전을 Linker 의 옵션으로 주었고 "CODE(?CO?VER(0x7FF6))" 이 때 사용하는 영역인 0x7FF6 이 사용 가능한 메모리 크기를 넘어 위 메시지가 떴다.


2018년 2월 23일 금요일

Clock Stretching

참조: Link

송신에는 clock stretching 이 있고 수신에는 Clock stretching 이 없는 이유
송신일 때는 데이터를 보내고 다음 클럭 신호를 보낸 후 잠시 응답을 기다려야 함
수신 모드일 때는 데이터를 받고 다음 클럭 신호를 받아 응답을 해줘야 함

둘의 차이점은
송신은 데이터를 보낸 후 응답을 기다리는 것이고,
수신은 데이터를 받은 후 응답을 해주는 것이다.

송신은 자신의 속도로는 끝났지만 기다려 주기 때문에 송신때만 clock stretching 이 있다.

참조: Link

I2C 통신에서 마스터 장치는 클럭 속도를 결정합니다. RS232와는 달리 I2C 버스는 마스터와 슬레이브가 사전 정의 된 baud rate와 정확하게 동기화되는 것을 완화할 수 있도록 명시적인 클럭 신호를 제공합니다.

I2C 슬레이브가 마스터가 제공하는 클럭 속도와 상호 작용할 수없고 약간 느려질 필요가있는 상황이 있습니다. 이것은 클럭 스트레칭이라고하는 메커니즘에 의해 수행됩니다.

I2C 슬레이브는 버스 속도를 줄여야하는 경우 시계를 잡고 있을 수 있습니다. 반면에 마스터는 클럭 신호를 하이 상태로 해제 한 후 클록 신호를 다시 읽고 라인이 실제로 하이가 될 때까지 기다려야합니다.

Bandwidth
클럭 스트레칭은 다소 이상하게 들리지만 일반적인 관행입니다. 그러나 공유 버스의 전체 대역폭은 상당히 줄어들 수 있습니다. 따라서 특히 여러 장치가 공유하는 I2C 버스의 경우 클록 스트레칭의 영향을 평가하는 것이 중요합니다. 가장 느린 I2C 장치가 버스 성능을 지배하지 않도록하십시오.

2018년 2월 22일 목요일

Level Shifter



네이버 지식사전: Link
디지털 게이트에 있어서 논리값 레벨을 조정하기 위하여 사용되는 저항, 접합 다이오드나 정전압 다이오드로서 이들 저항 또는 다이오드의 전압강하로 입력 또는 출력의 전압 레벨을 조정한다. 그림의 경우 정전류원의 작용으로 출력 레벨은 입력 레벨보다 대체로 rIE1만큼 인하되어 있다.

google 검색: Link
A level shifter in digital electronics, also called a logic-level shifter, is a circuit used to translate signals from one logic level or voltage domain to another, allowing compatibility between ICs with different voltage requirements, such as TTL and CMOS.[1][2] Many modern full featured systems use level shifters to bridge domains between low-power application processors running at 1.8 V and other system functions like sensors or other analog intensive applications running at 3.3 or 5V.

2017년 11월 19일 일요일

Compiler 관련

Compiler: LX51

Segment
Prefix
Memory
Class
Description
?BA?DATABit-addressable data in internal data memory
?BI?BITBit data in internal data memory
?CO?CONSTConstant data in program memory
?DT?DATADATA memory
?FC?HCONSTFar constant data in program memory
?FD?HDATAHDATA memory for far variables
?ID?IDATAIDATA memory
?PD?XDATAPaged data in XDATA memory
?PR?CODEExecutable program code
?PR?ECODEExecutable program code in far memory
?XD?XDATAXDATA memory

Example
    - PDATA (first 256 bytes of XDATA)
    - Link

.m51 file

ACTIVE MEMORY CLASSES OF MODULE:  SERDES_CTL_SW_NIOCAM_RELIABILITY_UART_PROGRAM_171114.OMF.CRBUILD (EXTINT)

BASE        START       END         USED      MEMORY CLASS
LX51 LINKER/LOCATER V4.66.30.0                         11/20/2017  10:47:23  PAGE 2
==========================================================
C:000000H   C:000000H   C:003FFEH   00111CH   CODE
C:000000H   C:000000H   C:003FFEH   000E3CH   CONST
C:000000H   C:000000H   C:003FFEH             ECODE

B00:0000H   C:000000H   C:003FFEH             HCONST

X:000000H   X:000000H   X:0007FFH   0000C1H   XDATA
X:000000H   X:000000H   X:0007FFH             HDATA

I:000020H.0 I:000020H.0 I:00002FH.7 000000H.5 BIT
I:000000H   I:000000H   I:00007FH   000032H   DATA
I:000000H   I:000000H   I:0000FFH   000001H   IDATA

CODE: 111C hex를 사용 4380 byte
CONST: E3C hex를 사용 3644 byte
XDATA: C1 hex 를 사용 193 byte

XDATA는 내가 직접 선언해서 쓸 수 있다(directly)

그 외의
DATA 는 모두 Internal DATA(Internal RAM) 으로 각 심볼마다 어떤 
메모리를 사용했는지 알 수 있다.

2017년 11월 17일 금요일

시리얼 통신방법에 대해 알고 싶을 때

시리얼 통신(뿐만아니라 모든 통신)은 표준이 있고, 그 표준은 그 기술을 사용하는 모든 업체에서 쓰고 있다.
그렇기 때문에 Major 업체의 문서(Datasheet)를 보면 이해가 쉬울 때가 많다.

유명한 반도체 회사로는
아트멜
ST마이크로일렉트로닉스
텍사스 인스트루먼트
프리스케일 세미컨덕터
아날로그 디바이시스
마이크로칩 테크날로지

등이 있다. 반도체 회사의 순위는 Link 참조

나의 경우 I2C 통신의 세부 Interrupt 의 동작을 알고 싶었고

필요한 내용을 찾는 순서는

1. atmel 홈페이지(Link)에 들어간다.
2. 제품 페이지(Link)로 들어간다.
3. Serial 통신이므로 Memory 항목의 Serial 페이지(Link)로 들어가면
4. Serial EEPROM - I2C 관련 페이지가 있고 문서(Link) 링크로 가면
5. 다양한 제품의 문서가 있는데 제일 위의 문서를 열고
    1) Device Addressing
    2) Write Operations
    3) Read Operations
부분을 보고 이해하면 된다.





2017년 11월 12일 일요일

Serial Port 에 대한 이해

Serial Port 는 말 그대로 컴퓨터 통신에서 bit 를 1개씩 일렬로 전달하는 것을 말한다. 이는 병렬로 데이터가 전송되는 parallel 과 대비되어 serial한 모든 통신을 나타낸다고 생각할 수 있지만(그런 의미도 포함한다)실제로는 RS232 표준이 구현된 H/W를 의미한다. RS232는 IBM 에서 처음 만들었던 Personal Computer 의 표준이었기 때문에 모든 컴퓨터에는 필수적으로 있었다. 하지만 RS232 는 속도가 느렸기 때문에 USB로 대체가 되어서 지금 나오는 컴퓨터들에는 Serial Port가 없다. 하지만 Serial Port가 워낙 많이 사용되었고 간단하기 때문에 이와 호환할 수 있는 Serial to USB(혹은 USB to Serial) 을 거의 모든 컴퓨터에서 지원(Mother board 에 COM Port 형태)한다. 

참조
Wilkipedia - SerialPort
Wikipedia - RS232
Wikipedia - Personal Computer
Wikipedia - COM Port

2017년 10월 6일 금요일

Difference between DSP Processor and Microcontroller(DSP와 Microcontoller 의 다른점)

참조(reference): Link

Key difference: DSP stands for digital signal processing. It is basically any signal processing that is done on a digital signal or information signal. A DSP processor is a specialized microprocessor that has an architecture optimized for the operational needs of digital signal processing. A microcontroller, on the other hand, is a small computer on a single integrated circuit containing a processor core, memory, and programmable input/output peripherals.  The microcontroller often also includes program memory, as well as, a small amount of RAM.
주요 차이점 : DSP는 디지털 신호 처리를 의미합니다. 이는 기본적으로 디지털 신호 또는 정보 신호에서 수행되는 모든 신호 처리입니다. DSP 프로세서는 디지털 신호 처리의 작동 요구 사항에 최적화 된 아키텍처를 갖춘 전문화 된 마이크로 프로세서입니다. 반면 마이크로 컨트롤러는 프로세서 코어, 메모리 및 프로그래밍 가능한 입출력 주변 장치를 포함하는 단일 집적 회로의 소형 컴퓨터입니다. 마이크로 컨트롤러에는 종종 프로그램 메모리뿐 아니라 소량의 RAM이 포함됩니다.

Microcontrollers and DSP processors are two types of microprocessors. They are programmed to perform a particular application or task as given by the user. They both operate by manipulating the binary data on the device. However, both are quite different in nature.
마이크로 컨트롤러와 DSP 프로세서는 두 가지 유형의 마이크로 프로세서입니다. 사용자가 지정한대로 특정 응용 프로그램이나 작업을 수행하도록 프로그래밍되어 있습니다. 둘 다 장치에서 이진 데이터를 조작하여 작동합니다. 그러나 둘 다 본질적으로 다릅니다.

DSP stands for digital signal processing. It is basically any signal processing that is done on a digital signal or information signal. DSP aims to modify or improve the signal. It is characterized by the representation of discrete units, such as discrete time, discrete frequency, or discrete domain signals. DSP includes subfields like communication signals processing, radar signal processing, sensor array processing, digital image processing, etc.
DSP는 디지털 신호 처리를 의미합니다. 이는 기본적으로 디지털 신호 또는 정보 신호에서 수행되는 모든 신호 처리입니다. DSP는 신호를 수정하거나 향상시키는 것을 목표로합니다. 이산 시간, 이산 주파수 또는 이산 기반 신호와 같은 개별 단위의 표현이 특징입니다. DSP에는 통신 신호 처리, 레이더 신호 처리, 센서 어레이 처리, 디지털 이미지 처리 등과 같은 하위 필드가 포함됩니다.

A DSP processor is a specialized microprocessor that has an architecture optimized for the operational needs of digital signal processing. The main goal of a DSP processor is to measure, filter and/or compress digital or analog signals. It does this by converting the signal from a real-world analog signal to a digital form. In order to convert the signal it uses a digital-to-analog converter (DAC). However, the required output signal is often another real-world analog signal. This is turn also requires a digital-to-analog converter.
DSP 프로세서는 디지털 신호 처리의 작동 요구 사항에 최적화 된 아키텍처를 갖춘 전문화 된 마이크로 프로세서입니다. DSP 프로세서의 주요 목표는 디지털 또는 아날로그 신호를 측정, 필터링 및 / 또는 압축하는 것입니다. 이는 실제 아날로그 신호의 신호를 디지털 형식으로 변환하여 수행합니다. 신호를 변환하기 위해 디지털 - 아날로그 컨버터 (DAC)를 사용합니다. 그러나 필요한 출력 신호는 종종 다른 실제 아날로그 신호입니다. 이것은 또한 디지털 - 아날로그 변환기가 필요합니다.

Digital signal processing algorithms run on various platforms, such as general purpose microprocessors and standard computers; specialized processors called digital signal processors (DSPs); purpose-built hardware such as Application-Specific Integrated Circuit (ASICs) and field-programmable gate arrays (FPGAs); Digital Signal Controllers; and stream processing for traditional DSP or graphics processing applications, such as image, video.
디지털 신호 처리 알고리즘은 범용 마이크로 프로세서 및 표준 컴퓨터와 같은 다양한 플랫폼에서 실행됩니다. 디지털 신호 프로세서 (DSP) 라 불리는 특수 프로세서; ASIC (Application-Specific Integrated Circuit) 및 FPGA (Field-Programmable Gate Array)와 같은 특수 목적의 하드웨어; 디지털 신호 컨트롤러; 이미지, 비디오와 같은 전통적인 DSP 또는 그래픽 처리 애플리케이션을위한 스트림 프로세싱을 제공합니다.

Digital signal processing is more complex in nature than analog signal processing; however it is has many advantages over ASP, such as error detection, correction in transmission, and data compression.
디지털 신호 처리는 본질적으로 아날로그 신호 처리보다 복잡합니다. 그러나 오류 검출, 전송 정정 및 데이터 압축과 같은 ASP보다 많은 장점이 있습니다.

A microcontroller, on the other hand, is a small computer on a single integrated circuit containing a processor core, memory, and programmable input/output peripherals.  The microcontroller often also includes program memory, as well as, a small amount of RAM. A microcontroller is sometimes abbreviated as µC, uC or MCU.
반면 마이크로 컨트롤러는 프로세서 코어, 메모리 및 프로그래밍 가능한 입출력 주변 장치를 포함하는 단일 집적 회로의 소형 컴퓨터입니다. 마이크로 컨트롤러에는 종종 프로그램 메모리뿐 아니라 소량의 RAM이 포함됩니다. 마이크로 컨트롤러는 때때로 μC, μC 또는 MCU로 약칭됩니다.

Microcontrollers are designed for embedded applications. They are often used in automatically controlled products and devices, such as automobile engine control systems, implantable medical devices, remote controls, office machines, appliances, power tools, toys and other embedded systems.
마이크로 컨트롤러는 임베디드 애플리케이션 용으로 설계되었습니다. 이들은 자동차 엔진 제어 시스템, 이식 형 의료 기기, 원격 제어, 사무 기기, 가전 제품, 전동 공구, 장난감 및 기타 임베디드 시스템과 같은 자동 제어 제품 및 장치에 자주 사용됩니다.

The advantage of using a microcontroller is that it makes it economical to digitally control devices and processes. It achieves this as it is more economical than using a design that uses a separate microprocessor, memory, and input/output devices.
마이크로 컨트롤러를 사용하면 장치 및 프로세스를 디지털 방식으로 제어하는 것이 경제적 인 이점이 있습니다. 이것은 별도의 마이크로 프로세서, 메모리 및 입 / 출력 장치를 사용하는 설계를 사용하는 것보다 경제적 인 점에서이 점을 실현합니다.

Mixed signal microcontrollers are common. They integrate analog components that are needed to control non-digital electronic systems. However today, many microcontroller type processors have either built in DSP-like instructions or on chip co-processors that deal with streaming data or other DSP operations.
혼합(Analog, Digital) 신호 마이크로 컨트롤러는 일반적입니다. 이들은 디지털이 아닌 전자 시스템을 제어하는 데 필요한 아날로그 구성 요소를 통합합니다. 그러나 오늘날 많은 마이크로 컨트롤러 유형의 프로세서는 스트리밍 데이터 또는 기타 DSP 동작을 처리하는 DSP와 유사한 명령 또는 칩 코 프로세서에 내장되어 있습니다.

Some differences between DSP and Microcontroller:
DSP와 마이크로 컨트롤러 간의 몇 가지 차이점 :

1. DSPs often don't have a flash program memory. They need the software to be 'loaded' into them. Whereas, microcontrollers have a non power off erasable program memory inside, some with EPROM store capabilities.
2. DSPs are much faster for integer mathematics operations, whereas many microcontrollers do not have the hardware.
3. DSPs are much faster for floating point operations. In microcontrollers, this has to be done in software.
4. DSPs are oriented to be an input/output device with 'fast calculating machine'. Microcontrollers are a multi-feature device with several ways of interfacing with the world, however none are the fastest.
5. DSPs are not designed to be a 'robust' device. They need a well designed board to work properly. Microcontrollers can work on a Test Board.
6. Microprocessors have many instructions oriented to multimedia, memory copying features, etc., that DSPs don’t.
7. DSPs are a fast calculator microprocessor, that is very effective for computing calculations and moving data, whereas, microcontrollers are a more flexible device with more features.
1. DSP에는 종종 플래시 프로그램 메모리가 없습니다. 소프트웨어에 소프트웨어를로드해야합니다. 반면, 마이크로 컨트롤러는 내부적으로 소거가 불가능한 프로그램 메모리를 가지고 있으며 일부는 EPROM 저장 기능을 갖추고 있습니다.
2. DSP는 정수 수학 연산에 훨씬 빠르지 만 많은 마이크로 컨트롤러에는 하드웨어가 없습니다.
3. DSP는 부동 소수점 연산에 훨씬 빠릅니다. 마이크로 컨트롤러에서 이것은 소프트웨어로 수행되어야한다.
4. DSP는 '빠른 계산 기계'를 갖춘 입력 / 출력 장치로 지향됩니다. 마이크로 컨트롤러는 세계와 인터페이스 할 수있는 여러 가지 기능을 갖춘 다중 기능 장치이지만 가장 빠른 것은 아닙니다.
5. DSP는 '단단한'(강한 테스트를 이겨낼 만한)장치로 설계되지 않았습니다. 제대로 작동하려면 잘 설계된 보드가 필요합니다. 마이크로 컨트롤러는 테스트 보드에서 작동 할 수 있습니다.
6. 마이크로 프로세서는 DSP가 제공하지 않는 멀티미디어, 메모리 복사 기능 등을위한 많은 명령어를 가지고 있습니다.
7. DSP는 빠른 계산기 마이크로 프로세서로 계산 및 데이터 이동에 매우 효과적이지만 마이크로 컨트롤러는 더 많은 기능을 갖춘 더 유연한 장치입니다.

2017년 9월 27일 수요일

CAN Physical Layers

The CAN Bus

The CAN bus uses Non-Return To Zero (NRZ) with bit-stuffing. There are two different signaling states: dominant (logically 0) and recessive (logically 1). These correspond to certain electrical levels which depend on the physical layer used (there are several.) The modules are connected to the bus in a wired-and fashion: if just one node is driving the bus to the dominant state, then the whole bus is in that state regardless of the number of nodes transmitting a recessive state.

Different Physical Layers

A physical layer defines the electrical levels and signaling scheme on the bus, the cable impedance and similar things.
There are several different physical layers:
  • The most common type is the one defined by the CAN standard, part ISO 11898-2, and it’s a two-wire balanced signaling scheme. It is also sometimes known as “high-speed CAN”.
  • Another part of the same ISO standard, ISO 11898-3, defines another two-wire balanced signaling scheme for lower bus speeds. It is fault tolerant, so the signaling can continue even if one bus wire is cut or shorted to ground or Vbat. It is sometimes known as “low-speed CAN”.
  • SAE J2411 defines a single-wire (plus ground, of course) physical layer. It’s used chiefly in cars – e.g. GM-LAN.
  • Several proprietary physical layers do exist.
  • Modifications of RS485 was used in the Old Ages when CAN drivers didn’t exist.
  • Go to Page 6 to view a number of oscilloscope pictures for those interested in the details of a message.
Different physical layers can not, as a rule, interoperate. Some combinations may work, or seem to work, under good conditions. For example, using both “high-speed” and “low-speed” transceivers on the same bus can work.. sometimes.
A great many CAN transceiver chips are manufactured by Philips; alternative vendors include Bosch, Infineon, Siliconix and Unitrode.
A very common type is the 82C250 transceiver which implements the physical layer defined by ISO 11898. The 82C251 is an improved version.
A common transceiver for “low-speed CAN” is TJA1054 from Philips.

Maximum Bus Speed

The maximum speed of a CAN bus, according to the standard, is 1 Mbit/second. Some CAN controllers will nevertheless handle higher speeds than 1Mbit/s and may be considered for special applications.
Low-speed CAN (ISO 11898-3, see above) can go up to 125 kbit/s.
Single-wire CAN can go up to around 50 kbit/s in its standard mode and, using a special high-speed mode used e.g. for ECU programming, up to around 100 kbit/s.

Minimum Bus Speed

Be aware that some bus transceivers will not allow you to go below a certain bit rate. For example, using 82C250 or 82C251 you can go down to 10 kbit/s without problems, but if you use the TJA1050 instead you can’t go below around 50 kbit/s. Check the data sheet.

Maximum Cable Length

At a speed of 1 Mbit/s, a maximum cable length of about 40 meters (130 ft.) can be used. This is because the arbitration scheme requires that the wave front of the signal can propagate to the most remote node and back again before the bit is sampled. In other words, the cable length is restricted by the speed of light. A proposal to increase the speed of light has been considered but was turned down because of its inter-galactic consequences.
Other maximum cable lengths are (these values are approximate) –
  • 100 meters (330 ft) at 500 kbit/s
  • 200 meters (650 ft) at 250 kbit/s
  • 500 meters (1600 ft) at 125 kbit/s
  • 6 kilometers (20000 ft) at 10 kbit/s
If optocouplers are used to provide galvanic isolation, the maximum bus length is decreased accordingly. Hint: use fast optocouplers, and look at the delay through the device, not at the specified maximum bit rate.

Bus Termination

An ISO 11898 CAN bus must be terminated. This is done using a resistor of 120 Ohms in each end of the bus. The termination serves two purposes:
  1. Remove the signal reflections at the end of the bus.
  2. Ensure the bus gets correct DC levels.
An ISO 11898 CAN bus must always be terminated regardless of its speed. I’ll repeat this: an ISO 11898 CAN bus must always be terminated regardless of its speed. For laboratory work just one terminator might be enough. If your CAN bus works even though you haven’t put any terminators on it, you are just lucky.
Note that other physical layers, such as “low-speed CAN”, single-wire CAN, and others, may or may not require termination. But your vanilla high-speed ISO 11898 CAN bus will always require at least one terminator.

The Cable

The ISO 11898 prescribes that the cable impedance be nominally 120 Ohms, but an impedance in the interval of [108..132] Ohms is permitted.
There are not many cables in the market today that fulfill this requirement. There is a good chance that the allowed impedance interval will be broadened in the future.
ISO 11898 is defined for a twisted pair cable, shielded or unshielded. Work is in progress on the single-wire standard SAE J2411.

CAN connectors

There is no standard at all for CAN bus connectors! Usually, each Higher Layer Protocol(!) defines one or a few preferred connector types. Common types include
  • 9-pin DSUB, proposed by CiA.
  • 5-pin Mini-C and/or Micro-C, used by DeviceNet and SDS.
  • 6-pin Deutch connector, proposed by CANHUG for mobile hydraulics.
  • Go to Page 7 to view a few different connector layouts.

CAN Messages, Part I

참조: Link

The CAN bus is a broadcast type of bus. This means that all nodes can “hear” all transmissions. There is no way to send a message to just a specific node; all nodes will invariably pick up all traffic. The CAN hardware, however, provides local filtering so that each node may react only on the interesting messages.
CAN bus는 broadcast 타입의 bus 입니다. 이 말은 모든 node들은 모든 통신내용을 들을 수 있다는 걸 의미합니다. 특정 node만이 들을 수 있도록 message를 보내는 것은 가능하지 않습니다.

The CAN messages

CAN uses short messages – the maximum utility load is 94 bits. There is no explicit address in the messages; instead, the messages can be said to be contents-addressed, that is, their contents implicitly determines their address.
CAN은 짧은 message를 사용합니다. – 가능한 최대 길이는 94bit(11byte + 6bit) 입니다. message에는 특정 주소가 있는 것은 아니지만; 대신, message는 내용에 주소가 있다고 이야기 할 수 있습니다. 그 이야기는 내용 자체에 암암리에 주소가 있기 때문 입니다.

Message Types

There are four different message types (or “frames”) on a CAN bus:
CAN bus에는 message의 타입(혹은 frame이라고 불림)이 4가지 있습니다.
  1. the Data Frame,
  2. the Remote Frame,
  3. the Error Frame, and
  4. the Overload Frame.

1. The Data Frame

Summary: “Hello everyone, here’s some data labeled X, hope you like it!”
요약: "안녕 모두들, 여기 라벨이 X라고 붙은 data가 있어, 좋아했으면 해!"
The Data Frame is the most common message type. It comprises the following major parts (a few details are omitted for the sake of brevity):
Data frame은 가장 일반적인 message 타입입니다. 몇가지 중요한 부분으로 구성되어 있습니다.(몇몇 세부내용은 간결함을 위하여 생략되었습니다.)
  • the Arbitration Field, which determines the priority of the message when two or more nodes are contending for the bus. The Arbitration Field contains:
  • Arbitration Field 라고 하는 부분은 message 간의 우선순위를 결정해 줍니다. bus에 있는 내용들이 2개 이상일 때 구별해 줍니다. Arbitration Field 는 아래 내용을 포함합니다:
    • For CAN 2.0A, an 11-bit Identifier and one bit, the RTR bit, which is dominant for data frames.
    • CAN 2.0A 에서는 11bit의 구별자와 1bit, RTR bit로서 data frame에서 dominant(0)인,
    • For CAN 2.0B, a 29-bit Identifier (which also contains two recessive bits: SRR and IDE) and the RTR bit.
    • CAN 2.0B 에서는 29bit의 구별자(두 개의 recessive bit(1)를 가진, SRR, IDE))와 RTR bit
  • the Data Field, which contains zero to eight bytes of data.
  • Data Field 는 0~8byte 의 길이를 가진다. 
  • the CRC Field, which contains a 15-bit checksum calculated on most parts of the message. This checksum is used for error detection.
  • CRC field 는 15bit로 계산 된 checksum 값을 error detection 을 위해서 사용한다. 
  • an Acknowledgement Slot; any CAN controller that has been able to correctly receive the message sends an Acknowledgement bit at the end of each message. The transmitter checks for the presence of the Acknowledge bit and retransmits the message if no acknowledge was detected.
  • Acknowledgement Slot는 각 message의 마지막에 붙은 bit로서 transmitter가 마지막에 보냈는지 체크해서 보내지 않았으면 다시 보낸다.? 방향이 헷갈림
Note 1: It is worth noting that the presence of an Acknowledgement Bit on the bus does not mean that any of the intended addressees has received the message. The only thing we know is that one or more nodes on the bus has received it correctly.
Note 1: Acknowledgement bit는 내가 원했던 node에서 message를 받았다는 것을 나타내지는 않는다 하지만 누군가는 받았다는것을 확인할 수 있으므로 있는것이 좋다.
Note 2: The Identifier in the Arbitration Field is not, despite of its name, necessarily identifying the contents of the message.
Note 2: Identifier의 Arbitration Field(중재 필드)는 그 이름에도 불구하고 충분히 message를 구분하지 못한다.
 A CAN 2.0A (“standard CAN”) Data Frame.
 A CAN 2.0B (“extended CAN”) Data Frame.





RTR: Remote transmission request
SRR: Substitute remote request
IDE: Identifier extension bit

Introduction: The CAN bus

Introduction: The CAN bus

The CAN bus is a broadcast type of bus. This means that all nodes can “hear” all transmissions. There is no way to send a message to just a specific node; all nodes will invariably pick up all traffic. The CAN hardware, however, provides local filtering so that each node may react only on the interesting messages.
CAN 버스는 broadcast 타입의 bus 입니다. 이 말은 모든 node들은 모든 통신 내용을 "들을" 수 있다는 이야기 입니다. 단지 하나의 node에만 message를 보내는 방법은 없습니다; 모든 node들은 언제나 모든 통신내용을 듣습니다. 하지만 CAN 하드웨어는 내부에서 filtering을 제공하며, 각 node에서는 관련이 있는 message 에만 반응합니다.

The bus uses Non-Return To Zero (NRZ) with bit-stuffing. The modules are connected to the bus in a wired-and fashion: if just one node is driving the bus to a logical 0, then the whole bus is in that state regardless of the number of nodes transmitting a logical 1.
bus는 NRZ 과 bit-stuffing을 사용한다. 이 말은 항상 의미가 있는 bit들의 조합을 사용하며 에러를 감지하기 위하여 특정 위치에(규칙으로) bit를 삽입한다는 의미이다. module들은 bus에 wired-AND 방식으로 연결되어 있다. 만약 하나의 node가 bus를 0상태로 변경하려고 하면, 모든 bus가 그 상태(0)이 된다 몇개의 node들이 1을 만들어내는것에 상관 없이. 

The CAN standard defines four different message types. The messages uses a clever scheme of bit-wise arbitration to control access to the bus, and each message is tagged with a priority.
CAN의 표준에서는 4가지 다른 message의 타입을 정의합니다. 이 message들은 영리한 방법으로 bit-wise arbitration 을 사용하여 bus로의 접근을 제어 하며, 각 message들은 우선순위가 있습니다.

The CAN standard also defines an elaborate scheme for error handling and confinement which is described in more detail in Section 9, “CAN Error Handling” (Pg 23).
또한 CAN표준은 오류처리 와 제한을 위한 정교한 계획을 정의합니다. 자세한 내용은 9장 "CAN 오류 처리"에서 확인할 수 있습니다.

Bit timing and clock synchronization is discussed in Page 8 of this Tutorial. Here’s a bit timing calculator you can use to calculate the CAN bus parameters and register settings.
비트 타이밍 및 클럭 동기화는이 자습서 8 페이지에서 설명합니다. 다음은 CAN 버스 매개 변수와 레지스터 설정을 계산하는 데 사용할 수있는 약간의 타이밍 계산기입니다.

CAN may be implemented using different physical layers (Pg 5), some of which are described here, and there are also a fair number of connector types (Pg 7) in use. We also provide a number of oscilloscope pictures (Pg 6) for those interested in the details of a message.
CAN은 서로 다른 물리 계층 (Pg 5)을 사용하여 구현 될 수 있으며, 그 중 일부는 여기에 설명되어 있으며 사용중인 커넥터 유형 (Pg 7)의 수가 상당히 있습니다. 또한 메시지의 세부 사항에 관심이있는 사람들을 위해 여러 오실로스코프 사진 (페이지 6)을 제공합니다.



Non-Return To Zero (NRZ) (Link)
기록 · 재생에 있어서의 하나의 모드로, 기록된 데이터의 각 아이템 다음에 신호가 반드시 제로로 복귀하지 않는 것. 따라서 중성(휴지:休止) 위치는 없다. 디짓 1은 하나의 진폭 레벨이고, 또 디짓 0은 다른 진폭 레벨(극성은 동극성일 때도 역극성일 때도 있다)로 표현된다. 제로 복귀 모드에 비해 기록 속도를 빨리 할 수 있다.
[네이버 지식백과] 비 복귀 기록 [non-return to zero, 非復歸記錄] (전자용어사전, 1995. 3. 1., 성안당)
bit-stuffing(Link)
전송된 데이터열에 여분의 비트를 삽입하는 것. 비트 스터핑은 특수한 비트열이 확실히 원하는 위치에만 나타나도록 하기 위해 사용한다.
wired-AND(Link)
bit-wise arbitration
confinement
bus(Link)
In computer architecture, a bus[1] (a contraction of the Latin omnibus) is a communication system that transfers data between components inside a computer, or between computers. This expression covers all related hardware components (wire, optical fiber, etc.) and software, including communication protocols