STM32 SPI
emulator (Part I)
System Level Requirements ေတြကိုသတ္မွတ္ျပီးေတာ့ SPI
emulation အေၾကာင္း
ကိုေဆြေႏြးသြားမွာျဖစ္ပါတယ္။ SPI emulator ရဲ႕ အဓိက features ေတြကိုေအာက္မွာျပထား
ပါတယ္။
·
Simplex/full-duplex, Synchronous, Serial
Communication
·
Master Operation ေတြနဲ႕ Slave Operation ေတြ
·
CPU ရဲ႕ Operating rate 168 MHz နဲ႕
Simplex mode မွာရွိတဲ့ SPI clock က 12 MHz နဲ႕အထက္ျဖစ္ပါတယ္။
·
CPU ရဲ႕ Operating rate 168 MHz နဲ႕
Full-duplex မွာရွိတဲ့ SPI Clock က 6 MHz နဲ႕အထက္ ျဖစ္ပါတယ္။
·
Programmable data word length က 8 bit နဲ႕
16 bit ျဖစ္ပါတယ္။
·
Program ကေနသတ္မွတ္လို႕ ရတဲ့ Clock
Polarity နဲ႕ Phase လည္းရွိပါတယ္။
·
MSB-first သို႕မဟုတ္ LSB-first ဆိုျပီးေတာ့
data ေတြကိုအစီအစဥ္အလိုက္ shift လုပ္လို႕လည္း ရပါတယ္။
·
GPIO ေတြအားလံုးကို SPI MOSI/MISO အျဖစ္ သတ္မွတ္ႏိုင္ပါတယ္။
·
Status Flags/interrupt အေနနဲ႕ Transmit
Complete(TxC) နဲ႕ Receive Complete (RxC) ျပီး ေတာ့ ႏွစ္ခုရွိပါတယ္။
SPI emulator implementation က GPIO, timer နဲ႕ DMA
peripheral ေတြအေပၚမွာ အေျခခံေနပါ တယ္။ SPI emulator ကိုျပင္ပ ပစၥည္းေတြနဲ႕ခ်ိတ္ဆက္ဖို႕ရန္အတြက္
line သံုးခုကိုအသံုးျပဳပါတယ္။ Data ေတြဟာ Tx နဲ႕ Rx mode မွာ BSRR နဲ႕ IDR
registers ေတြထဲကို transmit လုပ္ပါတယ္။
Data ကူးေျပာင္းျခင္းလုပ္ငန္းစဥ္ေတြကို DMA2 က
Channels ႏွစ္ခုနဲ႕အလုပ္လုပ္ပါတယ္။ Tx mode မွာ data ေတြအကးူအေျပာင္းျပဳလုပ္ဖို႕ရန္အတြက္
Channel6 Stream 1 က လုပ္ေဆာင္ပါတယ္။ Rx mode မွာ data ေတြအကူးအေျပာင္းျပဳလုပ္ဖို႕ရန္အတြက္
Channel6 Stream 2 ကလုပ္ေဆာင္ပါတယ္။ Rx signal ေတြနဲ႕ Tx signal ေတြရဲ႕ Output ေတြကို
handle ျပဳလုပ္ဖို႕ရန္အတြက္နဲ႕ SPI emulator input sampling ရဲ႕ timing ကိုထိန္းခ်ဳပ္ဖို႕ရန္အတြက္
timer overflow နဲ႕ IO capture ကိုႏွိဳင္းယွဥ္တဲ့ လုပ္ငန္းစဥ္ ေတြကိုအသံုးျပဳပါတယ္။
TIM1 က Master Mode မွာ clock signal ကိုထုတ္လႊတ္ေပးပါ တယ္။ ေနာက္ေတာ့ master နဲ႕
slave mode ႏွစ္ခုစလံုးအတြက္ လိုအပ္တဲ့ speed နဲ႕ data ေတြကိုကူး ေျပာင္းဖို႕ရန္အတြက္
DMA ဆီကို request ေတြေပးပို႕ပါတယ္။
Full duplex အတြက္လိုအပ္တဲ့ peripherals ေတြဟာ Tx mode
မွာအသံုးျပဳထားတဲ့ peripheral ေတြနဲ႕ Rx mode မွာအသံုးျပဳထားတဲ့ peripherals ေတြေပါင္းထားျဖစ္ပါတယ္။
ဇယားမွာ TIM1 နဲ႕ ျပထားေပ မယ့္ TIM1 နဲ႕ တူတဲ့ အျခားအျခားေသာ timers ေတြကိုလည္းအသံုးျပဳႏိုင္ပါတယ္။
SPI emulator ဟာ ျပင္ပ ပစၥည္းေတြနဲ႕ ခ်ိတ္တဲ့ ေနရာမွာ
pin သံုး pin ကိုအသံုးျပဳပါတယ္။
·
MISO : Master In / Slave Out
I/O pin ေတြကေနျပင္ဆင္သတ္မွတ္ႏိုင္ပါတယ္။
Slave mode မွာ data ေတြကိုေပးပို႕ ဖို႕ရန္ အတြက္နဲ႕ Master mode မွာ data ေတြကိုလက္ခံႏိုင္ဖို႕အတြက္
MISO ကိုသံုးပါတယ္။
·
MOSI : Master Out/ Slave In
I/O pin ေတြကေနျပင္ဆင္သတ္မွတ္ႏိုင္ပါတယ္။
Master mode မွာ data ေတြကိုေပးပို႕ ဖို႕ရန္ အတြက္နဲ႕ Slave mode မွာ data ေတြကိုလက္ခံႏိုင္ဖို႕ရန္အတြက္
MOSI ကိုသံုးပါတယ္။
·
SCK: Master အတြက္ output နဲ႕ SPI slave အတြက္
Serial Clock ျဖစ္ပါတယ္။
· Part II ဆက္ရန္
No comments:
Post a Comment