SlideShare a Scribd company logo
1 of 20
통신 교육 – I2C통신
MAZE
I2C 통신 (23기 김은정)
개요
TMS320F28x 프로세서에 탐재되는 통신회로 중
SPI/SCI/I2C/CAN에 대한 특징과 동작 구조를 이해하고
통신을 해보자는 의미에서 공부한다.
목차
01. SPI 통신
02. SCI 통신
03. I2C 통신
04. CAN통신
03. I2C 통신(Inter-Integrated Circuit)
I2C란
•디바이스를 두개의 신호선으로 제어 가능한 통신
•대부분의 디바이스들은 7비트 형식의 주소를 사용하기 때문에 그 경우
마스터가 지정할 수 있는 장치는 128개이다.
•SDA(serial DATA):
- 데이터를 전송하기 위한 신호
- 마스터와 슬레이브 사이의 양방향 신호
•SCL(serial CLOCK):
- 마스터와 슬레이브를 동기화
- 항상 마스터가 발생시킴, 단방향 신호
03. I2C 통신(Inter-Integrated Circuit)
I2C 통신의 장/단점
•장점:
- 클럭신호를 사용하는 동기식 통신으로 시간이 자유로움
- 多 : 多 통신이 가능함
•단점:
- 슬레이브 선택을 위해 주소데이터가 붙기 때문에, 긴 데이터에 부적합
- 같은종류를 다중으로 연결시 고유 address가 동일하기때문에
동시제어가 불가능
03. I2C 통신(Inter-Integrated Circuit)
· r/w = 0 → 마스터가 슬레이브에 데이터를 전달한다.
r/w = 1 → 마스터가 슬레이브의 데이터를 전달받는다.
· ack – 슬레이브가 내보내는 신호이며 마스터는 이 신호를 보고 데이터
전송이 성공적인지 판단함 ack비트는 주소,데이터 프레임의 끝에 항상 붙음
03. I2C 통신(Inter-Integrated Circuit)
interrupt
Basic I2C Interrupt Request
:여러 개가 한번에 걸릴 수 없고
arbiter에 의해 한 개가 선택되어 걸린다.
FIFO 복수의 신호가 있을 때 처리의
우선순위를 매기지 않고 제일 먼저 들어온
신호 순대로 처리하는 방식
03. I2C 통신(Inter-Integrated Circuit)
I2c 통신 규칙상 SDA & SCL 은 pull up 되어야 한다.
1.초기화
03. I2C 통신(Inter-Integrated Circuit)
I2caRegs.I2CSAR = (0x00e0 >> 1); // Slave Address.
여기서 DSP에서 사용시에는 slave address의 마지막bit는 r/w 1bit를 포함하므로 1bit
shift해준다.
I2caRegs.I2CPSC.all = 79;
다음은 통신속도클락를 조절하는 레지스터인데, 값이 너무 작으면 통신속도가
너무 빨라서 통신이 안되는 경우도 있으니 적당한 값을 설정해준다.
03. I2C 통신(Inter-Integrated Circuit)
• 클락이 안나오는경우
sysctrl.c에 들어가서 클락을 on 시켜줘야 한다.
>> SysCtrlRegs.PCLKCR0.bit.I2CAENCLK = 1;
• Interrupt 설정
여느 interrupt 설정과 같이 pievecter table에 따라 인터럽트 설정을 해준다.
03. I2C 통신(Inter-Integrated Circuit)
2. 통신 rx/tx
통신 규칙에 따라
1. START 신호를 보내고
2. SLAVE ADDRESS bit를 보내고
3. DATA를 보내고
4. DATA를 받고
03. I2C 통신(Inter-Integrated Circuit)
void I2C_tx_Uint16data(Uint16 data)
{
I2caRegs.I2CCNT = 1; //1byte 명령어 tx
I2caRegs.I2CDXR = data; //i2c data transmit register
I2caRegs.I2CMDR.all = 0x6e20;
}
void I2C_rx_Uint16length(Uint16 length)
{
g_u16data_length = length;
I2caRegs.I2CCNT = length;
I2caRegs.I2CMDR.all = 0x2c20;
}
I2CCNT register – data count register 로 data의 길이를 정하고
I2CDXR register – data transmit register 로 data를 받는다!
03. I2C 통신(Inter-Integrated Circuit)
I2caRegs.I2CMDR.bit.BC = 0; // 2:0 Bit count
I2caRegs.I2CMDR.bit.FDF = 0; // 3 Free data format
I2caRegs.I2CMDR.bit.STB = 0; // 4 Start byte
I2caRegs.I2CMDR.bit.IRS = 1; // 5 I2C Reset not
I2caRegs.I2CMDR.bit.DLB = 0; // 6 Digital loopback
I2caRegs.I2CMDR.bit.RM = 0; // 7 Repeat mode
I2caRegs.I2CMDR.bit.XA = 0; // 8 Expand address
I2caRegs.I2CMDR.bit.TRX = 1/0; // 9 Transmitter mode
Receive mode
I2caRegs.I2CMDR.bit.MST = 1; // 10 Master mode
I2caRegs.I2CMDR.bit.STP = 1; // 11 Stop condition
I2caRegs.I2CMDR.bit.rsvd1 = 0; // 12 reserved
I2caRegs.I2CMDR.bit.STT = 1; // 13 Start condition
I2caRegs.I2CMDR.bit.FREE = 0; // 14 Emulation mode
I2caRegs.I2CMDR.bit.NACKMOD = 0; // 15 No Ack mode
* I2CMDR register 의 설정
I2caRegs.I2CMDR.bit.TRX 에 따라 수신과 송신의 mode를
결정한다!!
03. I2C 통신(Inter-Integrated Circuit)
24 (0x18) gives a range of 1 metre and 93 (0x5D) is 4 metres.
3. Command 설정
사용한 초음파 센서의 경우 결과값의 단위 등 설정 값을 명령해주는 단계로 뒤의
I2cwrite 함수로 command를 해준다
03. I2C 통신(Inter-Integrated Circuit)
사용한 초음파 센서의 경우 datasheet에서와 같이 3번 command를 해줌으로써 명령에
해당되는 주소 값을 전달해준다.
03. I2C 통신(Inter-Integrated Circuit)
I2caRegs.I2CMDR.bit.BC = 0; // 2:0 Bit count
I2caRegs.I2CMDR.bit.FDF = 0; // 3 Free data format
I2caRegs.I2CMDR.bit.STB = 0; // 4 Start byte
I2caRegs.I2CMDR.bit.IRS = 1; // 5 I2C Reset not
I2caRegs.I2CMDR.bit.DLB = 0; // 6 Digital loopback
I2caRegs.I2CMDR.bit.RM = 0; // 7 Repeat mode
I2caRegs.I2CMDR.bit.XA = 0; // 8 Expand address
I2caRegs.I2CMDR.bit.TRX = 1/0; // 9 Transmitter mode
Receive mode
I2caRegs.I2CMDR.bit.MST = 1; // 10 Master mode
I2caRegs.I2CMDR.bit.STP = 1; // 11 Stop condition
I2caRegs.I2CMDR.bit.rsvd1 = 0; // 12 reserved
I2caRegs.I2CMDR.bit.STT = 1; // 13 Start condition
I2caRegs.I2CMDR.bit.FREE = 1 ; // 14 Emulation mode(free)
if) = 0; // 14 master mode
I2caRegs.I2CMDR.bit.NACKMOD = 0; // 15 No Ack mode
Write 함수의 register 설정으로 I2caRegs.I2CMDR.bit.FREE 의 값을 1로 둠으로 써 마스터
모드가 아닌 자유로운 모드 상태에서 명령을 해준다.
03. I2C 통신(Inter-Integrated Circuit)
앞서 command를 참고하여
명령을 해준뒤, data를 받겠다는
0x02 주소값을 보낸뒤 2byte의
센서값을 받는과정이다. 이
과정에서 command를 받기 위해
조금의 delay를 걸어주기 위해
interrupt를 사용하였다.
03. I2C 통신(Inter-Integrated Circuit)
0x0004 (100)일 때 data를 받을 준비가 되어 data를 받게 된다.
4. Interrupt 설정
03. I2C 통신(Inter-Integrated Circuit)
앞선 interrupt INTCODE에
따라서 100의 명령일 때
데이터를 받는다.
사용한 초음파 센서는
2byte의 센서값을
내보내기 때문에,
결과값을 비트연산을
이용하여 저장하였다.
03. I2C 통신(Inter-Integrated Circuit)
통신결과
• I2C통신을 이용한 초음파
센서값을 확인할 수 있다.

More Related Content

Similar to Maze통신교육 i2c

2013 mcu( 마이크로컨트롤러 ) 수업자료 3
2013 mcu( 마이크로컨트롤러 ) 수업자료 32013 mcu( 마이크로컨트롤러 ) 수업자료 3
2013 mcu( 마이크로컨트롤러 ) 수업자료 3
진우 김
 
Icmp Attak Against Tcp
Icmp Attak Against TcpIcmp Attak Against Tcp
Icmp Attak Against Tcp
xyzlee
 
원준갓의 IoT 수업
원준갓의 IoT 수업원준갓의 IoT 수업
원준갓의 IoT 수업
Won Jun Song
 
Si design guideforddr2-ddr3pcb_eng1
Si design guideforddr2-ddr3pcb_eng1Si design guideforddr2-ddr3pcb_eng1
Si design guideforddr2-ddr3pcb_eng1
thiagukv
 
Si design guideforddr2-ddr3pcb_eng
Si design guideforddr2-ddr3pcb_engSi design guideforddr2-ddr3pcb_eng
Si design guideforddr2-ddr3pcb_eng
thiagukv
 
Si design guideforddr2-ddr3pcb_eng
Si design guideforddr2-ddr3pcb_engSi design guideforddr2-ddr3pcb_eng
Si design guideforddr2-ddr3pcb_eng
thiagukv
 

Similar to Maze통신교육 i2c (20)

Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약
 
2013 mcu( 마이크로컨트롤러 ) 수업자료 3
2013 mcu( 마이크로컨트롤러 ) 수업자료 32013 mcu( 마이크로컨트롤러 ) 수업자료 3
2013 mcu( 마이크로컨트롤러 ) 수업자료 3
 
Avr lecture8
Avr lecture8Avr lecture8
Avr lecture8
 
TestSDIC2017-2(answer)
TestSDIC2017-2(answer)TestSDIC2017-2(answer)
TestSDIC2017-2(answer)
 
Mikrotic CCR1036 라우팅 설정
Mikrotic CCR1036 라우팅 설정Mikrotic CCR1036 라우팅 설정
Mikrotic CCR1036 라우팅 설정
 
Icmp Attak Against Tcp
Icmp Attak Against TcpIcmp Attak Against Tcp
Icmp Attak Against Tcp
 
ADC(nanheekim)
ADC(nanheekim)ADC(nanheekim)
ADC(nanheekim)
 
Avr lecture1
Avr lecture1Avr lecture1
Avr lecture1
 
원준갓의 IoT 수업
원준갓의 IoT 수업원준갓의 IoT 수업
원준갓의 IoT 수업
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수
 
Si design guideforddr2-ddr3pcb_eng1
Si design guideforddr2-ddr3pcb_eng1Si design guideforddr2-ddr3pcb_eng1
Si design guideforddr2-ddr3pcb_eng1
 
Si design guideforddr2-ddr3pcb_eng
Si design guideforddr2-ddr3pcb_engSi design guideforddr2-ddr3pcb_eng
Si design guideforddr2-ddr3pcb_eng
 
Si design guideforddr2-ddr3pcb_eng
Si design guideforddr2-ddr3pcb_engSi design guideforddr2-ddr3pcb_eng
Si design guideforddr2-ddr3pcb_eng
 
Processor
ProcessorProcessor
Processor
 
Packet tracer 설치 및 사용법
Packet tracer 설치 및 사용법Packet tracer 설치 및 사용법
Packet tracer 설치 및 사용법
 
스트리밍 프로토콜
스트리밍 프로토콜스트리밍 프로토콜
스트리밍 프로토콜
 
광운대[바람] 1.vhdl intro
광운대[바람] 1.vhdl intro광운대[바람] 1.vhdl intro
광운대[바람] 1.vhdl intro
 
ECU, CAN, LIN AND OBD
ECU, CAN, LIN AND OBDECU, CAN, LIN AND OBD
ECU, CAN, LIN AND OBD
 

Recently uploaded

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
Wonjun Hwang
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
Wonjun Hwang
 

Recently uploaded (6)

오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
 
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
 

Maze통신교육 i2c

  • 1. 통신 교육 – I2C통신 MAZE I2C 통신 (23기 김은정)
  • 2. 개요 TMS320F28x 프로세서에 탐재되는 통신회로 중 SPI/SCI/I2C/CAN에 대한 특징과 동작 구조를 이해하고 통신을 해보자는 의미에서 공부한다.
  • 3. 목차 01. SPI 통신 02. SCI 통신 03. I2C 통신 04. CAN통신
  • 4. 03. I2C 통신(Inter-Integrated Circuit) I2C란 •디바이스를 두개의 신호선으로 제어 가능한 통신 •대부분의 디바이스들은 7비트 형식의 주소를 사용하기 때문에 그 경우 마스터가 지정할 수 있는 장치는 128개이다. •SDA(serial DATA): - 데이터를 전송하기 위한 신호 - 마스터와 슬레이브 사이의 양방향 신호 •SCL(serial CLOCK): - 마스터와 슬레이브를 동기화 - 항상 마스터가 발생시킴, 단방향 신호
  • 5. 03. I2C 통신(Inter-Integrated Circuit) I2C 통신의 장/단점 •장점: - 클럭신호를 사용하는 동기식 통신으로 시간이 자유로움 - 多 : 多 통신이 가능함 •단점: - 슬레이브 선택을 위해 주소데이터가 붙기 때문에, 긴 데이터에 부적합 - 같은종류를 다중으로 연결시 고유 address가 동일하기때문에 동시제어가 불가능
  • 6. 03. I2C 통신(Inter-Integrated Circuit) · r/w = 0 → 마스터가 슬레이브에 데이터를 전달한다. r/w = 1 → 마스터가 슬레이브의 데이터를 전달받는다. · ack – 슬레이브가 내보내는 신호이며 마스터는 이 신호를 보고 데이터 전송이 성공적인지 판단함 ack비트는 주소,데이터 프레임의 끝에 항상 붙음
  • 7. 03. I2C 통신(Inter-Integrated Circuit) interrupt Basic I2C Interrupt Request :여러 개가 한번에 걸릴 수 없고 arbiter에 의해 한 개가 선택되어 걸린다. FIFO 복수의 신호가 있을 때 처리의 우선순위를 매기지 않고 제일 먼저 들어온 신호 순대로 처리하는 방식
  • 8. 03. I2C 통신(Inter-Integrated Circuit) I2c 통신 규칙상 SDA & SCL 은 pull up 되어야 한다. 1.초기화
  • 9. 03. I2C 통신(Inter-Integrated Circuit) I2caRegs.I2CSAR = (0x00e0 >> 1); // Slave Address. 여기서 DSP에서 사용시에는 slave address의 마지막bit는 r/w 1bit를 포함하므로 1bit shift해준다. I2caRegs.I2CPSC.all = 79; 다음은 통신속도클락를 조절하는 레지스터인데, 값이 너무 작으면 통신속도가 너무 빨라서 통신이 안되는 경우도 있으니 적당한 값을 설정해준다.
  • 10. 03. I2C 통신(Inter-Integrated Circuit) • 클락이 안나오는경우 sysctrl.c에 들어가서 클락을 on 시켜줘야 한다. >> SysCtrlRegs.PCLKCR0.bit.I2CAENCLK = 1; • Interrupt 설정 여느 interrupt 설정과 같이 pievecter table에 따라 인터럽트 설정을 해준다.
  • 11. 03. I2C 통신(Inter-Integrated Circuit) 2. 통신 rx/tx 통신 규칙에 따라 1. START 신호를 보내고 2. SLAVE ADDRESS bit를 보내고 3. DATA를 보내고 4. DATA를 받고
  • 12. 03. I2C 통신(Inter-Integrated Circuit) void I2C_tx_Uint16data(Uint16 data) { I2caRegs.I2CCNT = 1; //1byte 명령어 tx I2caRegs.I2CDXR = data; //i2c data transmit register I2caRegs.I2CMDR.all = 0x6e20; } void I2C_rx_Uint16length(Uint16 length) { g_u16data_length = length; I2caRegs.I2CCNT = length; I2caRegs.I2CMDR.all = 0x2c20; } I2CCNT register – data count register 로 data의 길이를 정하고 I2CDXR register – data transmit register 로 data를 받는다!
  • 13. 03. I2C 통신(Inter-Integrated Circuit) I2caRegs.I2CMDR.bit.BC = 0; // 2:0 Bit count I2caRegs.I2CMDR.bit.FDF = 0; // 3 Free data format I2caRegs.I2CMDR.bit.STB = 0; // 4 Start byte I2caRegs.I2CMDR.bit.IRS = 1; // 5 I2C Reset not I2caRegs.I2CMDR.bit.DLB = 0; // 6 Digital loopback I2caRegs.I2CMDR.bit.RM = 0; // 7 Repeat mode I2caRegs.I2CMDR.bit.XA = 0; // 8 Expand address I2caRegs.I2CMDR.bit.TRX = 1/0; // 9 Transmitter mode Receive mode I2caRegs.I2CMDR.bit.MST = 1; // 10 Master mode I2caRegs.I2CMDR.bit.STP = 1; // 11 Stop condition I2caRegs.I2CMDR.bit.rsvd1 = 0; // 12 reserved I2caRegs.I2CMDR.bit.STT = 1; // 13 Start condition I2caRegs.I2CMDR.bit.FREE = 0; // 14 Emulation mode I2caRegs.I2CMDR.bit.NACKMOD = 0; // 15 No Ack mode * I2CMDR register 의 설정 I2caRegs.I2CMDR.bit.TRX 에 따라 수신과 송신의 mode를 결정한다!!
  • 14. 03. I2C 통신(Inter-Integrated Circuit) 24 (0x18) gives a range of 1 metre and 93 (0x5D) is 4 metres. 3. Command 설정 사용한 초음파 센서의 경우 결과값의 단위 등 설정 값을 명령해주는 단계로 뒤의 I2cwrite 함수로 command를 해준다
  • 15. 03. I2C 통신(Inter-Integrated Circuit) 사용한 초음파 센서의 경우 datasheet에서와 같이 3번 command를 해줌으로써 명령에 해당되는 주소 값을 전달해준다.
  • 16. 03. I2C 통신(Inter-Integrated Circuit) I2caRegs.I2CMDR.bit.BC = 0; // 2:0 Bit count I2caRegs.I2CMDR.bit.FDF = 0; // 3 Free data format I2caRegs.I2CMDR.bit.STB = 0; // 4 Start byte I2caRegs.I2CMDR.bit.IRS = 1; // 5 I2C Reset not I2caRegs.I2CMDR.bit.DLB = 0; // 6 Digital loopback I2caRegs.I2CMDR.bit.RM = 0; // 7 Repeat mode I2caRegs.I2CMDR.bit.XA = 0; // 8 Expand address I2caRegs.I2CMDR.bit.TRX = 1/0; // 9 Transmitter mode Receive mode I2caRegs.I2CMDR.bit.MST = 1; // 10 Master mode I2caRegs.I2CMDR.bit.STP = 1; // 11 Stop condition I2caRegs.I2CMDR.bit.rsvd1 = 0; // 12 reserved I2caRegs.I2CMDR.bit.STT = 1; // 13 Start condition I2caRegs.I2CMDR.bit.FREE = 1 ; // 14 Emulation mode(free) if) = 0; // 14 master mode I2caRegs.I2CMDR.bit.NACKMOD = 0; // 15 No Ack mode Write 함수의 register 설정으로 I2caRegs.I2CMDR.bit.FREE 의 값을 1로 둠으로 써 마스터 모드가 아닌 자유로운 모드 상태에서 명령을 해준다.
  • 17. 03. I2C 통신(Inter-Integrated Circuit) 앞서 command를 참고하여 명령을 해준뒤, data를 받겠다는 0x02 주소값을 보낸뒤 2byte의 센서값을 받는과정이다. 이 과정에서 command를 받기 위해 조금의 delay를 걸어주기 위해 interrupt를 사용하였다.
  • 18. 03. I2C 통신(Inter-Integrated Circuit) 0x0004 (100)일 때 data를 받을 준비가 되어 data를 받게 된다. 4. Interrupt 설정
  • 19. 03. I2C 통신(Inter-Integrated Circuit) 앞선 interrupt INTCODE에 따라서 100의 명령일 때 데이터를 받는다. 사용한 초음파 센서는 2byte의 센서값을 내보내기 때문에, 결과값을 비트연산을 이용하여 저장하였다.
  • 20. 03. I2C 통신(Inter-Integrated Circuit) 통신결과 • I2C통신을 이용한 초음파 센서값을 확인할 수 있다.