TI์ DSP์ธ TMS320F28069๋ฅผ ์ด์ฉํ์ฌ SPIํต์ ์ ์ฌ์ฉํ๊ธฐ ์ํ ์ธํ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ๋ค.
1) SPI ๊ตฌ์ฑ
๋ง์คํฐ๊ฐ ์ฌ๋ ์ด๋ธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ก์ ํ ๋
์ฌ๋ ์ด๋ธ์๊ฒ ๋ง์คํฐ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ ๋ฐ์ ๋
๋ง์คํฐ ๋ชจ๋(MASTER_SLAVE = 1)์์ SPI๋ SPI CLK ํ์์ ์๋ฆฌ์ผ ํด๋ญ์ ์ถ๋ ฅํ๊ณ , ๋ฐ์ดํฐ๋ SPI SIMO ํ์ ํตํด ์ถ๋ ฅํ๋ฉฐ, SPI SOMI ํ์ผ๋ก ์ ๋ ฅ์ ๋ฐ๋๋ค.
SPIBRR ๋ ์ง์คํฐ๋ ๋คํธ์ํฌ์ ์ ์ก ๋ฐ ์์ ๋นํธ์ ๋ํ ์ ์ก ์๋๋ฅผ ๋ชจ๋ ์ค์ ํ๋ค. SPIBRR์ 125๊ฐ์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ์ก ์๋๋ฅผ ์ ํํ ์ ์๋ค.
SPIDAT ๋๋ SPITXBUF์ ๊ธฐ๋ก๋ ๋ฐ์ดํฐ๋ ๋จผ์ SPI SIMO ํ, MSB(์ต์์ ๋นํธ)์์ ๋ฐ์ดํฐ ์ ์ก์ ์์ํ๋ค. ๋์์ ์์ ๋ ๋ฐ์ดํฐ๋ SPI SOMI ํ์ ํตํด SPIDAT์ LSB(์ตํ์ ๋นํธ)๋ก ์ด๋๋๋ค.
์ ํํ ๋นํธ ์๊ฐ ์ ์ก๋๋ฉด ์์ ๋ ๋ฐ์ดํฐ๋ CPU๊ฐ ์ฝ์ ์ ์๋๋ก SPIRXBUF(์์ ๋ฒํผ)๋ก ์ ์ก๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ SPIRXBUF์ ์ค๋ฅธ์ชฝ ์ ๋ ฌ๋ก ์ ์ฅ๋๋ค.
์ง์ ๋ ์์ ๋ฐ์ดํฐ ๋นํธ๊ฐ SPIDAT๋ฅผ ํตํด ์ด๋๋๋ฉด ๋ค์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
• SPIDAT ์ฝํ
์ธ ๋ SPIRXBUF๋ก ์ ์ก๋๋ค.
• INT_FLAG ๋นํธ๋ 1๋ก ์ค์ ๋๋ค.
• ์ ์ก ๋ฒํผ SPITXBUF์ ์ ํจํ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ์ ์ก ๋ฒํผ ๊ฐ๋ ์ฐธ ํ๋๊ทธ(BUFFULL_FLAG)์ ์ํด ํ์๋ ๋๋ก ์ด ๋ฐ์ดํฐ๋ฅผ SPIDAT๋ก ์ ์กํ์ฌ ์ ์กํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด SPIDAT์์ ๋ชจ๋ ๋นํธ๊ฐ ์ด๋๋ ํ SPICLK๊ฐ ์ค์ง๋๋ค.
• SPINTENA ๋นํธ๊ฐ 1๋ก ์ค์ ๋๋ฉด ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ค.
์ผ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
์์ SPISTE(CS) ํ์ SPI ์ฌ๋ ์ด๋ธ ์ฅ์น์ ์นฉ ์
๋ ํธ(์ธ์์ด๋ธ) ํ ์ญํ ์ ํ๋ค. ์ด ํ์ ์ฌ๋ ์ด๋ธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ ์ ๋ง์คํฐ์ ์ํด ๋ก์ฐ๋ก ๊ตฌ๋๋๊ณ ์ ์ก์ด ์๋ฃ๋ ํ ํ์ด๋ก ์ค์ ๋๋ค.
4๋นํธ์ SPICHAR(SPICCR ๋ ์ง์คํฐ์ 0~4๋ฒ ๋นํธ) ์ ๋ฐ์ดํฐ ๋ฌธ์์ ๋นํธ ์(1~16)๋ฅผ ์ค์ ํฉ๋๋ค. ์ด ์ ๋ณด๋ ์์ ํ ๋ฌธ์๊ฐ ์ฒ๋ฆฌ๋ ์๊ธฐ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ์์ ๋๋ ์ ์ก๋ ๋นํธ ์๋ฅผ ๊ณ์ฐํ๋๋ก ์ํ ์ ์ด ๋
ผ๋ฆฌ์ ์ง์ํ๋ค.
๋ค์ ๋ช
๋ น๋ฌธ์ 16๋นํธ ๋ฏธ๋ง์ ๋ฌธ์์ ์ ์ฉ๋๋ค.
• ๋ฐ์ดํฐ๋ SPIDAT ๋ฐ SPITXBUF์ ์ธ ๋ ์ผ์ชฝ ์ ๋ ฌ๋์ด์ผ ํ๋ค.
• SPIRXBUF์์ ๋ค์ ์ฝ์ ๋ฐ์ดํฐ๋ ์ค๋ฅธ์ชฝ ์ ๋ ฌ๋๋ค.
• SPIRXBUF์๋ ๊ฐ์ฅ ์ต๊ทผ์ ์์ ๋ ๋ฌธ์, ์ค๋ฅธ์ชฝ ์ ๋ ฌ ๋ฐ ์ผ์ชฝ์ผ๋ก ์ด๋๋ ์ด์ ์ ์ก์์ ๋จ์ ์๋ ๋นํธ๊ฐ ํฌํจ๋๋ค.
์์์ ๊ฐ๋ตํ๊ฒ SPI์ ๋์์ ๋ํด์ ์์๋ดค๋ค. ์ด์ ์ธํ ํ๋ ์์์ด๋ค.
2) SPI ์ธํ ๋ฐฉ๋ฒ
(1) SPI ์ก์์ ๋ฐ์ดํฐ ๋นํธ ์ธํ
SPICCR ๋ ์ง์คํฐ์ 0~3๋ฒ ๋นํธ๋ฅผ ํตํด์ SPI ์ก์์ ๋ฐ์ดํฐ์ ๋นํธ ์๋ฅผ ์ ํํ๋ค.
SpibRegs.SPICCR.bit.SPICHAR = 0x0F;
16๋นํธ๋ก ์ธํ ํ์๋ค.
(2) SPI ์๋ ์ธํ
BAUD RATE ์ธํ ์ SPIBRR ๋ ์ง์คํฐ์ 0~6๋ฒ ๋นํธ๋ฅผ ํตํด์ ์ธํ ํ ์ ์๋ค.
LSPCLK๋ LOSPCP ๋ ์ง์คํฐ์ 0~2๋ฒ ๋นํธ๋ฅผ ํตํด ์ธํ ํ ์ ์๋ค. ๊ธฐ๋ณธ ๊ฐ์ผ๋ก 2์ธ 010์ผ๋ก ์ธํ ๋์ด ์๋ค. ํ์ฌ ์์คํ ํด๋ญ SYSCLKOUT์ด 90MHz๋ก ๋๋๊ธฐ 4๋ฅผ ํ๋ฉด LSPCLK๋ 22.5MHz์ด๋ค.
SpibRegs.SPIBRR = 0x007F;
BRR์ 7F ๋ฅผ ์ฃผ์๋ค. 22.5MHz์ 128์ ๋๋๋ฉด 175,781.25 Hz๊ฐ ๋์จ๋ค.
(3) SPI ๋ง์คํฐ/์ฌ๋ ์ด๋ธ ์ธํ
SPI์ ๋ง์คํฐ/์ฌ๋ ์ด๋ธ ์ธํ ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ DSP๋ฅผ ๋ง์คํฐ๋ก ์ธํ ํ๊ฒ ๋ค. ์ฌ๋ ์ด๋ธ๋ก EEPROM์ ์ฌ์ฉํ ๊ฒ์ด๋ค. SPICTL ๋ ์ง์คํฐ์ 2๋ฒ ๋นํธ์ธ MASTER_SLAVE ์ 1์ ์ฃผ๋ฉด ๋ง์คํฐ ๋ชจ๋์ด๊ณ , 0์ ์ฃผ๋ฉด ์ฌ๋ ์ด๋ธ ๋ชจ๋์ด๋ค.
SpibRegs.SPICTL.bit.MASTER_SLAVE = 1;
(4) SPI ์ก์ ํ์ฑํ
์์ ๋์ผํ ๋ ์ง์คํฐ์ธ SPICTL์์ 1๋ฒ ๋นํธ์ธ TALK๋ก ์ก์ ํ์ฑํ๋ฅผ ํ๊ฒ ๋ค.
์์คํ ๋ฆฌ์ ์ ์ ๋นํธ๋ ์ง์์ง๋ค๊ณ ํ๋ค.
SpibRegs.SPICTL.bit.TALK = 1;
(5) SPI ํด๋ญ ๊ทน์ฑ ์ธํ
SPI์ SPI ํด๋ญ ๊ทน์ฑ์ ์ค์ ํ๋ ๋จ๊ณ์ด๋ค. SPICCR ๋ ์ง์คํฐ์ 6๋ฒ ๋นํธ์ธ CLKPOLARITY ๋ฅผ ์ค์ ํ๋ค.
0 : ๋ฐ์ดํฐ๊ฐ ์์น ์ฃ์ง์์ ์ถ๋ ฅ๋๊ณ , ํ๊ฐ ์ฃ์ง์์ ์ ๋ ฅ, ๋ฐ์ดํฐ ์ ์ก์ด ์์๋ CLK์ LOW
1 : ๋ฐ์ดํฐ๊ฐ ํ๊ฐ ์ฃ์ง์์ ์ถ๋ ฅ๋๊ณ , ์์น ์ฃ์ง์์ ์ ๋ ฅ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์์๋ CLK์ HIGH
์ฌ๊ธฐ์ SPICTL ๋ ์ง์คํฐ์ 3๋ฒ ๋นํธ์ธ CLOCK_PHASE์ ๋ฐ๋ผ์ ์ฃ์ง๊ฐ ๋ฐ๋๋๋ฐ..
ํญ๋ชฉ | ์ํ | CLOCK_PHASE | ||
0 | 1 | |||
CLKPOLARITY | 0 | ์ถ๋ ฅ | ์์น ์ฃ์ง | ํ๊ฐ ์ฃ์ง |
์ ๋ ฅ | ํ๊ฐ ์ฃ์ง | ์์น ์ฃ์ง | ||
๋ฐ์ดํฐ ์์ ๋ ํด๋ญ | LOW ์ํ | |||
1 | ์ถ๋ ฅ | ํ๊ฐ ์ฃ์ง | ์์น ์ฃ์ง | |
์ ๋ ฅ | ์์น ์ฃ์ง | ํ๊ฐ ์ฃ์ง | ||
๋ฐ์ดํฐ ์์ ๋ ํด๋ญ | HIGH ์ํ |
SpibRegs.SPICCR.bit.CLKPOLARITY = 0;
SpibRegs.SPICTL.bit.CLK_PHASE = 1;
์ถ๋ ฅ์ ํ๊ฐ์ฃ์ง, ์ ๋ ฅ์ ์์น ์ฃ์ง๋ก ์ธํ ํ์๋ค. ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ํด๋ญ์ LOW ์ํ์ผ ๊ฒ์ด๋ค.
๋ง์ง๋ง์ผ๋ก..
SPICCR ๋ ์ง์คํฐ์ 7๋ฒ ๋นํธ์ธ SPISWRESET์ ์ธํ ํ์ฌ SPI๋ฅผ ์ด๊ธฐํํด์ค๋ค. ์ด๊ธฐํ ํ ์ถ๋ ฅ๋๋ ํด๋ญ์ ์ฒซ๋ฒ์งธ ๋นํธ๋ก ๋ณธ๋ค.
SpibRegs.SPICCR.bit.SPISWRESET = 1;
3) SPI ์ธํ ์์
SPI ์ธํ ํ ์์ ์ด๋ค. SPI ์ธํ ๊ณผ GPIO ์ธํ ์ ๋ํ ๋ด์ฉ์ด๋ค.
(1) SPI ์ด๊ธฐํ
void InitSpiEP(void)
{
SpibRegs.SPICCR.bit.SPISWRESET = 0; // SPI RESET
SpibRegs.SPICCR.bit.SPICHAR = 0x000F; // 16-bit char bits
SpibRegs.SPIBRR = 0x007F; // BAUD RATE
SpibRegs.SPICTL.bit.MASTER_SLAVE = 1; // MASTER MODE
SpibRegs.SPICTL.bit.TALK = 1; // TX ENABLE
SpibRegs.SPICTL.bit.SPIINTENA = 0; // SPI INTERRUPT DISABLE
SpibRegs.SPICCR.bit.CLKPOLARITY = 0; // 0:R/E Wo Dly 0: R/E W Dly 1:F/E Wo Dly 1:F/E W Dly
SpibRegs.SPICTL.bit.CLK_PHASE = 1 ; // 0 1 0 1
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
SpibRegs.SPICCR.bit.SPISWRESET = 1; // SPI RESET
}
SPICCR ๋ ์ง์คํฐ์ 7๋ฒ ๋นํธ์ธ SPISWRESET ์ '0'์ผ๋ก ์ฃผ๊ณ SPI๋ฅผ ์ด๊ธฐํ์์ผ์ค๋ค. ์ด๋ ํ๋๊ทธ ๋ฑ์ด ์ด๊ธฐํ๋๋ค.
๊ทธ ๋ค์ ๋ด์ฉ๋ค์ ์์์ ๋ณธ ๋ด์ฉ๋ค์ ๋ณด๋ฉด์ ์ธํ ์ ํ์ธํด๋ณด๋ฉด ๋๊ฒ ๋ค.
(2) SPI GPIO ์ด๊ธฐํ
void InitSpibGpio()
{
// EEPROM
EALLOW;
// cs
GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0; // Enable pull-up on GPIO15
GpioDataRegs.GPASET.bit.GPIO15 = 1; // Load output latch
GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 0; // Configure GPIO15 as GPIO
GpioCtrlRegs.GPADIR.bit.GPIO15 = 1; // Set Direction GPIO11 as Output
GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pull-up on GPIO12 (SPI SIMO B)
GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0; // Enable pull-up on GPIO13 (SPI SOMI B)
GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0; // Enable pull-up on GPIO14 (SPI CLK B)
GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 3; // Asynch input GPIO12 (SPI SIMO B)
GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 3; // Asynch input GPIO13 (SPI SOMI B)
GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 3; // Asynch input GPIO14 (SPI CLK B)
GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 3; // Configure GPIO12 as SPI SIMO B
GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 3; // Configure GPIO13 as SPI SOMI B
GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 3; // Configure GPIO14 as SPI CLK B
EDIS;
}
SPI์ฉ CS๋ ๋ฏธ์ํด์ ๊ทธ๋ฐ์ง ๋ง์์ฒ๋ผ ๋์์ด ์ ๋์ง ์์์ ํด๋น ํ์ GPIO๋ก ์ธํ ํ์ฌ ์ ์ดํ์๋ค.
์ด์ SPI ์ธํ ์ ๋๋ฌ๋ค. ์ก์์ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์.
[TI] TMS320F28069 ๋ก SPI EEPROM ์ฐ๊ณ ์ฝ๊ธฐ
[TI] TMS320F28069 ๋ก SPI EEPROM ์ฐ๊ณ ์ฝ๊ธฐ
๋ง์ดํฌ๋ก์นฉ์ค์ EEPROM ์ ํ์ธ 25LC040A-E/OT ์ SPI๋ก ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ ์ฝ๋ ๊ณผ์ ์ ํ ๊ฒ์ด๋ค. DSP ๋ TMS320F28069 ๋ชจ๋ธ์ ์ฌ์ฉํ ๊ฒ์ด๋ค. 1) SPI ์ก์ ๊ณผ ์์ TI DSP๋ก EEPROM๊ณผ SPI๋ก ํต์ ํ๋ ๊ฒ์ ์ด์ ์์ํด
yomi-electronics.tistory.com
'Embedded HW & FW > TI (C2000...)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TI] TMS320F28069๋ก ADC ADS8320 ์๊ฒ ๊ฐ ์ฝ๊ธฐ (0) | 2023.03.03 |
---|---|
[TI] TMS320F28069๋ก EEPROM์ธ 25LC040A-E/OT๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ธํ (0) | 2023.03.03 |
[TI] TMS320F28069 ๋ก SPI EEPROM ์ฐ๊ณ ์ฝ๊ธฐ (0) | 2023.02.24 |
[TI] SCI (UART) ์ธ๋ถํด๋ญ ์ฌ์ฉ์ BAUD RATE ์ธํ (1) | 2023.02.24 |
[TI] UART (SCI) ์ฝ์ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ๊ธฐ (0) | 2023.02.20 |
์ต๊ทผ๋๊ธ