SlideServe
Menu
Préférences
© SlideServe · v2026

The Serial Peripheral Interface (SPI)

gari avatar
36 diapositives · 606 Views · Sep 24, 2014

The Serial Peripheral Interface (SPI). Lecture L4.5. Reference. SPI Block Guide V03.06. S12SPIV3.pdf. PIM_9C32 Block Diagram. SPI module. $DA. $D8. $D8. $D8. $D9. $D9. $DB. $DB. Liquid Crystal Display. Relationship between RS, R/W, and E. CLM912C32 LCD PORT 4-bit SPI

The Serial Peripheral Interface (SPI) - slide 1
01 / 36The Serial Peripheral Interface (SPI)
1 / 17

Télécharger la présentation

The Serial Peripheral Interface (SPI)
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. The Serial Peripheral Interface (SPI) Lecture L4.5

  2. Reference SPI Block Guide V03.06 S12SPIV3.pdf

  3. PIM_9C32 Block Diagram SPI module

  4. $DA

  5. $D8

  6. $D8

  7. $D8

  8. $D9

  9. $D9

  10. $DB

  11. $DB

  12. Liquid Crystal Display

  13. Relationship between RS, R/W, and E

  14. CLM912C32 LCD PORT 4-bit SPI Interface Write only

  15. File: spi.asm ; Serial Peripheral Interface SPI0 SPI0CR1 equ 00D8 ; SPI Control Register 1 SPI0CR2 equ 00D9 ; SPI Control Register 1 SPI0BR equ 00DA ; SPI Baud Rate Register SPI0SR equ 00DB ; SPI Status Register SP0DR equ 00DD ; SPI Data Register spi_init ; Initialize SPI port ldaa #$10 staa SPI0CR2 ; enable /SS clr SPI0BR ; 4 MHz (/2) ldaa #$52 staa SPI0CR1 ; CPHA = 0, CPO; = 0 rts

  16. File: spi.asm (cont.) ; send A out spi  send_spi psha ; save A ss0 ldaa SPI0SR anda #$20 beq ss0 ; wait for trans. buff empty pula ; get A psha ; save it again staa SP0DR ; send char ss1 ldaa SPI0SR anda #$80 beq ss1 ; wait till sent ldaa SP0DR ; clear SPIF pula ; restore A rts

  17. SPI0CR1 $D8

  18. ; LCD for Axiom CML9S12-C32 #include hex2asc.asm #include spi.asm #include ms_delay.asm ; Write 4-bit instruction in A instr4 psha ;save A anda #$0f jsr send_spi ;EN LO, RS LO psha ;save A oraa #$80 ;EN HI jsr send_spi pula ;get A jsr send_spi ;EN LO pula ;restore A rts

  19. ; Write 8-bit instruction in A instr8 psha ;save A lsra lsra lsra lsra bsr instr4 ;send hi nibble pula ;get A bsr instr4 ;send lo nibble rts

  20. ; Write 4-bit data in A data4 psha ;save A anda #$0f psha ;save A oraa #$40 ;EN HI jsr send_spi ;EN LO, RS HI pula ;get A psha ;save A oraa #$C0 ;EN HI jsr send_spi pula ;get A psha oraa #$40 jsr send_spi ;EN LO pula pula ;restore A rts

  21. ; Write 8-bit data in A data8 psha ;save A lsra lsra lsra lsra bsr data4 ;send hi nibble pula ;get A bsr data4 ;send lo nibble rts 

  22. ; Initialize 4-bit wide lcd_init ldy #50 jsr ms_delay ldaa #3 jsr instr4 ; function set ldy #50 jsr ms_delay ldaa #3 jsr instr4 ; function set ldy #50 jsr ms_delay ldaa #3 jsr instr4 ; function set ldy #50 jsr ms_delay ldaa #2 jsr instr4 ; function set ldy #50 jsr ms_delay ldaa #$2C jsr instr8 ; 4-bits, 2 lines ldy #10 jsr ms_delay ldaa #$06 jsr instr8 ; inc cursor ldy #10 jsr ms_delay ldaa #$0f jsr instr8 ; display on ldy #10 jsr ms_delay ldaa #$01 jsr instr8 ; clear display ldy #20 jsr ms_delay ldaa #$80 jsr instr8 ; set addr to 0 ldy #10 jsr ms_delay ldaa #$00 jsr send_spi ; turn off all signals rts

  23. clear_lcd ldaa #1 jsr instr8 ldy #10 jsr ms_delay rts ; display hex value in A on LCD  hex2lcd jsr hex2asc ;convert to ascii jsr data8 ;display it rts ; display asciiz string on LCD ; X -> asciiz string  type_lcd ldaa 1,x+ ;get next char beq done ;if null, quit jsr data8 ;else display it ldy #10 jsr ms_delay ; delay 10 ms bra type_lcd ;and repeat done rts

  24. ; lcdtest.asm org $800 mess1 db 'Haskell',0 org $4000 main jsr spi_init jsr lcd_init ldx #mess1 jsr type_lcd swi #include lcd.asm

  25. 1: ; lcdtest.asm 2: 3: =00000800 org $800 4: 0800 48 61 73 6B 65 6C mess1 db 'Haskell',0 0806 6C 00 5: 6: =00004000 org $4000 7: 8: 4000 main 9: 4000 16 4019 jsr spi_init 10: 4003 16 4088 jsr lcd_init 11: 4006 CE 0800 ldx #mess1 12: 4009 16 410A jsr type_lcd 13: 400C 3F swi

  26. 16 x 1 Hex Keypad