레이블이 HardWare인 게시물을 표시합니다. 모든 게시물 표시
레이블이 HardWare인 게시물을 표시합니다. 모든 게시물 표시

2018년 5월 20일 일요일

실장 방법에 따른 Chip 종류

목적: Chip의 Datasheet를 볼 때 PIN Map을 참조해야 하는데 하나의 Chip이라도 다른 형태의 PIN이 존재하기 때문에 어떤 핀을 참조해야 하는지 모르는 경우가 있다. 그 이유가 QSOP, QFN 등의 단어들과 함께 나오는데 이를 이해하기 위함이다.


내용: Chip은 Board에 실항하는 방법에 따라 모양이 달라지는데 Lead 가 있는 타입과 없는 타입이 나눠지는 경우, 그리고 더 자세하게 나눠지는 경우 들이 있다.
QSOP: Quarter-size small-outline package
QFN: quad-flat no-leads







2018년 5월 18일 금요일

I2C 통신 속도 분석

목적: Chip 의 Register에 적혀있는 I2C 의 속도 설명을 이해한다.

Datasheet 내용
I2C Master SCL High Time This field configures the high pulse width of the SCL output when the Serializer is the Master on the local I2C bus.
Units are 40 ns for the nominal oscillator clock frequency. The default value is set to provide a minimum 5us SCL high time with the reference clock at 25 MHz + 100ppm.
The delay includes 5 additional oscillator clock periods. Min_delay = 39.996ns * (SCL_HIGH_TIME + 5

분석
1. SCL High Time 이 8bit, SCL Low Time 이 8bit 로 Register에 적혀 있다.
    - I2C 통신에 사용되는 Clock의 신호가 High 로 유지되는 시간과 Low로 유지되는 시간을 설명해주는 내용이다.
2. 두 Register의 기본값은 0x79, 0x79로 동일하다.
3. Units are 40ns for the norminal oscillator clock frequency.
    - 하나의 단위는(여기서 SCL의 High 가 한번 유지되는 시간이나 Low가 유지되는 시간) 40ns 이다. 기본값(여기서는 0x79)는 SCL High나 Low 유지되는 시간의 최소값인 5us 를 만족하기 위해서 입력되어 있다.
    - 여기서는 reference clock이 25MHz 라고 되어 있는데 이 clock은 PCLK 과 동일한 것인지
    - clock 이 25MHz 라면 frequency 는 40ns
    - 계산 식으로는 Min-delay = 39.996ns * (SCL_HIGH_TIME + 5) 일때 'SCL_HIGH_TIME' 를 0x79(121) 로 변환하면 39.996ns * (121 + 5) = 5039.496ns 가 된다. 이는 약 5um 으로서 최소값 5um 를 만족 한다.
    - SCL High Time이 5.039496um 이고 SCL Low Time이 5.039496um 라는 것은 하나의 cycle이 10.07899um 라는 것으로 99,216.27083 이라는 숫자가 나오며 99.2162783 KHz로 계산된다.
    - 최종적으로 reference clock 이 25MHz 의 clock 이라면 0x79 를 기본 값으로 하는 I2C SCL High, I2C SCL Low 값은 약 100KHz 의 I2C Clock Frequency 를 의미한다.
4. 그러면 여기서 100ppm 은 무엇인가
5. remote delay



2017년 11월 7일 화요일

Hardware 용어

bit stuffing
이어진 5개의 1 bit 의 끝에 0을 추가하는 것

differential
두 신호의 차나, 입력 신호와 참조 전압과의 차를 만드는 회로를 말한다.

bitwise
bit 단위로 처리한다.

arbitration
중재

bitwise arbitration
bit 단위로 중재한다고 해석되며(비트단위조정), bit를 받아들이며 판단을 하여 message를 send하지 못하도록 하는것?

CAN 에서는 bitw

2017년 11월 5일 일요일

BackChannel on Video Communication

Video Data
sensor -> serializer -> deserializer -> human eye

so serializer send video data to deseirializer usually
but deseirializer can send data to serializer using GPIO and other thing.
so if serialzie and deserializer support back channel to communicate data

2017년 11월 4일 토요일

CAN Standard Frame Format

Base Frame Format



Start-of-frame
1
Denotes the start of frame transmission

Identifier (green)
11
A (unique) identifier which also represents the message priority

Remote transmission request (RTR) (blue)
1
Must be dominant (0) for data frames and recessive (1) for remote request frames (see Remote Frame, below)

Identifier extension bit (IDE)
1
Must be dominant (0) for base frame format with 11-bit identifiers

Reserved bit (r0)
1
Reserved bit. Must be dominant (0), but accepted as either dominant or recessive.

Data length code (DLC) (yellow)
4
Number of bytes of data (0–8 bytes)[a]

Data field (red)
0–64 (0-8 bytes)
Data to be transmitted (length in bytes dictated by DLC field)

CRC
15
Cyclic redundancy check

CRC delimiter
1
Must be recessive (1)

ACK slot
1
Transmitter sends recessive (1) and any receiver can assert a dominant (0)

ACK delimiter
1
Must be recessive (1)

End-of-frame (EOF)
7
Must be recessive (1)


Terminology
1. dominant, recessive
recessive(1): 열성
dominant(0): 우성
이라고 해석이 된다. low 나 high 가 아니라 recessive 나 dominant 라고 부르는 이유는 network 에서 통신을 할 때 ID 가 더 낮은 ECU 가 먼저 통신을 한다는 것이다. CAN 통신에서는 메시지를 받는 ECU 가 알아서 처리를 하므로 ID 가 낮은걸 먼저 처리할 것인다( 동시에 왔을 때 어떻게 동작하는지 실제 예를 알 고 싶다.)
2. bus network
    - 하나의 버스 선에 각 Node(ECU 등) 를 연결해서 통신하는 network 방식
3. 종단 저항
    - 반사 현상을 막기 위하여 끝에 연결한 저항(통신 라인의 임피던스와 동일하다)
4. CRC
an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data.
Blocks of data entering these systems get a short check value attached, based on the remainder of a polynomial division of their contents.
CRCs are so called because the check (data verification) value is a redundancy (it expands the message without adding information) and the algorithm is based on cyclic codes.
CRC 가 왜 15bit 냘고 하면 CRC-16 알고리즘을 썼기 때문이다. 16bit 짜리로 나누어서 15자리가 남게되면 그 15bit을 뒤에 붙여서 나누면 0이 남는다. CRC 가 동작하는 원리가 그것.
5. arbitration
다중 노드가 동시에 메시지를 CAN 버스로 전송하려는 경우 최우선 순위를 가진 노드 (가장 낮은 중재 ID)가 자동적으로 버스에 액세스됩니다. 최저 우선 순위를 가진 노드는 버스가 사용 가능할 때까지 반드시 대기해야 합니다. 이러한 방식으로 CAN 네트워크를 실행하면 CAN 노드 사이에 결정성있는 통신을 구현할 수 있습니다.
다른 아이디가 동시에 시그널을 보내면 우선순위가 높은 노드가 메시지를 보내고 다른 노드들이 보내지 못하는 것 까지는 이해 하는데 정확히 같은 타이밍이라 메시지를 두개 이상의 노드에서 보내면 우선순위가 가장 낮은것 빼고 나머지의 데이터가 어떻게 되는지 아직 이해하지 못함

2017년 9월 26일 화요일

Serial 통신 비교(UART vs SPI vs I2C)

참조 Link

Serial 통신 이해를 위해 Internet 상의 좋은 자료를 찾았고, 이해를 위해 번역 및 내용 추가 하였습니다.

---

이 페이지에서는 UART, SPI, I2C 를 테이블 형식으로 비교 합니다.
여러 항목들을 비교할 예정 입니다.


항목
UART
SPI
I2C
전체 이름
Universal Asyncronous Receiver/Transmitter
Serial Peripheral Interface
Inter-Integrated Circuit
Interface Diagram


TxD: Transmit Data
RxD: Receive Data
SCLK: Serial Clock
MOSI: Master Output, Slave Input
MISO: Master Input, Slave Output
SS: Slave Select
SDA: Serial Data
SCL: Serial Clock
Data Rate
데이터 전송 속도
비동기(asynchronous) 통신이기 때문에 공유하는 Clock 없어서 통신하는 양쪽 기기의 속도를 동일하게 맞춰 주어야 한다. 동일하지 않아도 통신이 되는 경우가 있지만 의도하지 않은 데이터가 들어갈 경우가 있다
Maximum 통신 속도는 Model 에 따라 다르며, 일반적으로 115,200bps 이다.
SPI에서 최대 데이터 속도는 정해져 있지 않다. 보통 10Mbps 에서 20Mbps 사이 이다.
I2C 100Kbps, 400Kbps, 3.4Mbps 주로 사용하며 10Kbps 1Mbps 사용하는 경우도 있다.
Distance 거리
5미터 이하
가장 길다.
길다.
Type of communication
통신의 종류
비동기
통신을 하는 기기가 같은 clock 공유하지 않는다는 의미로, 통신하는 기기가 동일한 속도를 맞춰야 한다. 편리한 점은 속도만 맞추면 어떤 기기와도 통신이 가능하다는
동기
같은 clock 사용하여 통신을 한다는 의미로, 개발 단계에서 연결이 되어야 한다.
동기
Number of masters
Master 없다. 각자 주고(Tx), 받는(Rx) .
Master 하나이며 변하지 않는다.
Master 하나 이상이 있다.
Clock
공유하는 Clock 없다. 기기는 각자의 Clock 사용하며 통신 시에는 동일한 데이터 전송 속도를 설정하여 송수신 해야 한다.
Master Slave들은 동일한 Clock 사용한다.
Master들과 Slave들은 동일한 클럭을 사용한다.
Hardware Complexity
가장 복잡하지 않다.
복잡하지 않다.
복잡하다.
Protocol
Data 8bit 보내며 앞에 Start bit 뒤에 Stop bit 붙인다.
통일된 Protocol 있지 않다. 그래서 해당 기기의 datasheet 참조해야 한다. 예를 들어 microcontroller EEPROM 통신을 한다면 EEPROM datasheet 봐야 한다.
Start bit Stop bit 사용하며 데이터는 8bit 전송한다. 8bit 보내고 나면 (slave?) ack 사용하여 데이터가 받아졌는지를 확인한다. 아래 그림에 표시 되어있다.

Software addressing
1:1 통신만을 하기 때문에 addressing 필요 없다.
Master에는 slave 개수만큼 slave select 라인이 있기 때문에 해당 line 통해서 slave 선택한다.
다수의 master 다수의 slave 존재하고, master 모든 slave 접근할 있다. 27개의 slave까지 지원이 되며 master 고유 주소값을 통해 접근한다.
장점
하드웨어가 간단해서 거의 모든 장치에서 UART 지원하기 때문에 (9개의 핀이 연결되거나, USB 있는 장치라면) 편리하다. RS232 라고도 불린다. RS232 protocol 이름이며 UART 그것을 가능하게 주는 송수신기를 의미하기 때문이다.
간단한 프로토콜이기 때문에 구현하는데 어렵지 않다. Full duplex(전체 동시 송수신, 전이중) 통신을 지원한다.
나뉘어진 slave select 라인이 있기 때문에 같은 종류의 칩들이 회로에 사용될 있다.
SPI push-pull 사용하기 때문에 높은 데이터 전송률을 가지며 거리도 가능하다.
SPI I2C 비교하면 적은 파워를 사용한다.
Open collector(?) 디자인이기 때문에 slew rate(출력 전압의 최대 변화율, 모양이 이상해 지는 ) 제한적이다.
이상의 master 가능하다.
선이 필요하다.
Addressing 하는 방법이 간단해서 SPI 같이 여러 라인이 필요하지 않다.
Open collector bus concept 가지고 있어 bus voltage 유연(다른  voltage level 가능)하다.
Flow control 사용한다. (ack 말하는 )
Mixed speed 가 가능하다(Link)
단점
1:1 통신만 지원한다.
동일한 속도를 맞추고 시작해야 한다. 그렇지 않으면 데이터가 깨질 것이다.
Voltage level 이 동일해야 한다.
Slave 많아지면 slave 라인이 필요하기 때문에 hardware 구성이 복잡해진다.
만약 slave 추가 된다면 선을 새로 연결해야 하며 addressing 위해 software 디자인이 변경되어야 한다.
Master slave 고정되어 있기 때문에 I2C에서 하는 것처럼 역할 변경을 없다.
Flow control 없다.
Voltage level 이 동일해야 한다.
Master slave 많아지면 복잡성이 증가한다.
I2C half duplex(반이중) 이다. 말은 하나의 SDA 통해서 Data 방향으로 있지만 한번에는 하나의 데이터만 간다는 뜻이다. UART 항상 방향으로만 가는데 반해 이중은 동시는 아니지만 방향이 가능하다.
참조
RS232 Interface>>
UART는 회로를 의미하는 단어로, 일반적으로 EIA RS-232, RS-422, RS-485와 같은 통신 표준과 함께 사용한다.


I2C
  • I2C 의 Slave 주소는 해당 Chip의 Datasheet에 Idx의 구성에 따라 여러가지로 될 수 있다는 것이 명시되어 있다. 여러 Chip이 같은 Bus를 통해서 연결될 수 있기 때문이다. 그래서 실제 IDx 의 회로 구성을 확인하여 주소값을 확인해야 한다.
  • Slave I2C의 속도는 해당 Chip의 Register Setting 에 의해 변경될 수 있다. Clock 과 Data의 최대 속도를 확인하고 그 이상으로 셋팅하지 않아야 한다.
  • I2C 에서 1Byte 단위로 데이터를 송신하기 때문에 9번째 bit를 보면 ACK 여부를 확인할 수 있다. Start와 Stop 신호를 제외하면 모두 이 1byte(8bit) 단위로 송신이 되며 보통 Slave Address(1byte), Register Address(1~2 Byte), Value(1Byte) 로 한 셋트를 송신하지만 인접한 Address 의 경우에는 연속으로 쓸 수 있다. 이를 Burst Write 혹은 Sequential Write 라고 부른다.
  • I2C 를 여러 Chip 끼리 연결하려고 하면(같은 Bus) 신호의 Level 을 맞춰 주어야 한다. 보통 1.8V, 3.3V, 5V 등 이 있으며 이를 맞춰주기 위해서는 Level Shifter 가 회로에 구성되어 있어야 하면 그렇지 않으면 통신이 정상적으로 이루어 지지 않는다.
  • I2C 를 이해할 때는 몇 V 로 동작하는지, Start Condition은 SDA 가 default 1인 상태에서 0으로 갈 때 신호가 시작되고, SDA, SCL 모두 default 1인 상태에서 0으로 갈 때가 동작을 진행한 상태이므로 우선순위가 높다 그래서 ACK 신호가 low(SCL high, SDA low) 인 것이다. Start 와 Stop(SDA가 0으로 먼저 떨어지고 SCL high 가 된 상태) 를 제외하면 총 9bit를 사용하는데 8bit 가 하나의 1byte 이므로 이를 보내기 위해서 사용되며 나머지 1bit 가 반대쪽의(write 시 slave 에서 잘 받았다고 보내는 신호) ACK 이다. Mater에서 read 시에는 데이터를 slave 쪽에서 보내는 데 이 때 데이터를 전부 보내고 나면 NACK 를 보내 더이상 보낼 데이터가 없다는 것을 알려준다.
I2C ACK(Link)