SPI haberleşme ve Max7219

Master Slave SPI Haberleşme

Master Slave SPI Haberleşmesi

İlk defa Motorola firması tarafından geliştirilen ve daha sonra diğer firmalarında kabul ettiği ve kullandığı, çevresel cihazlarla veya diğer mikrodenetleyicilerle  haberleşmeyi sağlayan yazılım veya donanım tabanlı  seri iletişim protokolüdür.

Bu yazımızda bu protokolü ve Max7219 ile master slave uygulamasını yapacağız.

Kullanılan donanım; PIC18F4550 Deney Kiti(https://elektrokod.wordpress.com/2014/09/10/usb-hid-bootloader-pic18f4550-deney-karti/), Max7219 çift 4 displayli modül, USB lojik Analizör.

Yazılım; MikroC Programlama ortamı, Logic 1.2.11 lojik analizör yazılımı.

SPI haberleşmede bir adet master ve bir veya daha fazla slave bulunabilir.

Master ve Çoklu Slave SPI Haberleşmesi

Master ve Çoklu Slave SPI Haberleşmesi

 SPI Mod’ları

SPI haberleşmede 4 mod kullanılmaktadır. Bunlar;

SPI Modları

SPI Modları

CPOL clock sinyalinin başlangıç polaritesini, CPHA ise örneklemenin  CLK sinyalinin “0” dan “1”e yükselen kenar mı yoksa “1” den “0” a düşen kenarda  mı yapılacağını belirtir.  Veri iletişiminde master ve slave modları aynı olmalıdır.

MODE0

MODE0 Diyagramı

MODE0 Diyagramı

MODE1

MODE1 Diyagramı

MODE1 Diyagramı

MODE2

MODE2 Diyagramı

MODE2 Diyagramı

MODE3

MODE3 Diyagramı

MODE3 Diyagramı

Max7219 Entegresi

Max7219 entegresi iki adet 4’lü mux veya 8 adet mux ortak katot displayi tarama mantığı ile sürebilen led sürücü entegresidir. SPI arabirim ile tek yönlü haberleşme sağlanır. Displaye yazdırılmak istenen bilgi seri olarak  gönderilir. Bazı özellikleri aşağıda sıralanmıştır.

  • 10MHz Seri haberleşme arabirimi
  • Yerleşik 7 segment kod çözücü
  • Shutdown modda 150 μA akım
  • Dijital ve analog Led parlaklık (akım) kontrolü
  • Başlangıçta display testi yapabilme.
  • Ortak katot LED display sürücü

Entegre ile SPI Haberleşme

Max7219 Entegresi SPI Haberleme Diyagramı ve Veri yapısı

Max7219 Entegresi SPI Haberleme Diyagramı ve Veri yapısı

Timing Diagramda görüldüğü gibi CLKPOL=0, CPHA=0 olduğundan “MODE 0” SPI haberleşme kullanılacaktır. Veri boyutu 16 bittir. Bunun High byte’ı Adres yani komut, Low byte’ı ise değerdir.

Max7219 Komutları

Max7219 Komutları

Devre Bağlantısı

PIC18F4550 ile Max7219 Bağlantı Şeması

PIC18F4550 ile Max7219 Bağlantı Şeması

SPI pin isimleri;

MOSI : Master Out Slave Input (Master çıkışı-Slave girişi)

MISO : Master Input Slave Output (Master girişi Slave çıkışı)

SCK : Clock sinyali – senkronizasyon palsi

SS/CS : Slave Select /Chip Select (Low’a çekilerek istenilen Slave seçilir.)

Program Kodları


//Program butona her basıldığında 0. Digite 0-9 arası sayıları yazdıracaktır.

#define    BUTON            PORTB.B0

#define    CS               PORTA.B5

unsigned char sayac=0;

void max7219_Yaz(char adres, char deger)

{

  CS=0;

  SPI1_Write(adres);

  SPI1_Write(deger);

  CS=1;

}

void max7219_init()

{

  max7219_Yaz(0x0C,0x01);   // Normal mod stanby değil

  max7219_Yaz(0x09,0xFF);   // bütün digitlerde decode var

  max7219_Yaz(0x0A,0x00);   // parlaklık düşük (1/32) en yüksek 0x0F (31/32)

  max7219_Yaz(0x0B,0x00);   //Scan-Limit Register Format (Address (Hex) = 0xXB)

                            //0x00 sadece 0.   digit, 0x07 bütün digitler

  max7219_Yaz(0x0F,0x01);   //Display-Test Register Format(Address (Hex) = 0xXF) , 0 normal 1 test

  Delay_ms(500);                     //test süresince bekle -500ms-

  max7219_Yaz(0x0F,0x00);   //normal mod

  max7219_Yaz(0x01,0x00);   //ilk değer 0 yaz
 
}

void main()
{
  ADCON1=0x1F;            // Analog girişler kapalı- Bütün analog pinler dijital-

  TRISA=0;                // PORTA çıkış

  TRISB=0xFF;             // Buton giriş diğerleri çıkış

  TRISE=0;                // PORTE çıkış

  LATE=0x07;              // Bütün ledler ON

  Delay_ms(1000);         // 1 sn yanık kalsın

  LATE=0;                 // Bütün ledler OFF

  PORTA.B5=1;             // CS çıkışı H yap

  SPI1_Init();            // SPI donanım birimini kur

  max7219_init();         // Max7219 başlangıç ayarlarını yükle

do
{

  if(!BUTON)                  // eğer butona basıldıysa

  {

    Delay_ms(10);             // buton arkı için 10 ms bekle

    sayac++;                  // sayac'ı attrır

    if(sayac==10) sayac=0;    // eğer sayac 10 ise sıfırla

    max7219_Yaz(1,sayac);     // 0. digit'e sayac'ı yazdır

    LATE=sayac;               // sayac içeriğini porte'ye bağlı ledlerde göster

    while(!BUTON);            // butondan elini çekene kadar bekle

    Delay_ms(100);            // karışıklığa mahal vermemek için biraz daha bekle

  }

}while(1);

}// main fonk. sonu

Programda kullanılan SPI1_int() fonksiyonu SPI arabirimini;

  • master mode
  • clock Fosc/4
  • clock idle state low (CLKPOL=0)
  • data transimtted on low to high edge (CPHA=0)
  • input data sampled at the middle of interval

olarak kurar. SPI1_Write(char değer) fonksiyonu ise SPI1 Donanımına bir byte veri yazar.

 

Aşağıda max7219_Yaz(char adres, char deger) fonksiyonun haberleşme diyağramı görülmektedir.

Max7219 SPI Haberleşme Lojik Analizör Diyagramı

Max7219 SPI Haberleşme Lojik Analizör Diyagramı

Lojik analizör programında ayarlardan hangi kanala hangi bağlantının yapıldığı seçildikten sonra SPI polarite ve faz ayarları aşağıdaki gibi yapılır.

logic-ayar

Uygulama Videosu

Kaynaklar:

http://www.ni.com/white-paper/9119/en/

http://www.totalphase.com/blog/2014/12/cpol-cpha-bitrate-configured-host-adapter-spi-slave-mode/

http://support.saleae.com/hc/en-us/articles/210244663-Learn-SPI-Serial-Peripheral-Interface

https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf

https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

http://learn.mikroe.com/ebooks/piccprogramming/chapter/serial-communication-modules/

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s