Here is a an easy to understand example sending and receiving data over Hardware SPI.
I needed something to test on, so I took a RAM (chip 23LCV1024 1Mbit) and after som hair loss, I had managed how to write data on to it, verifying by reading the data back. I hope it will be useful to someone else.
#CHIP 18F27Q84, 64#OPTION Explicit#include<glcd.h>#DEFINE GLCD_TYPE GLCD_TYPE_SSD1306#DEFINE GLCD_I2C_Address 0x78 // Define I2C Software settings#DEFINE I2C_MODE Master#DEFINE I2C_DATA PORTC.0#DEFINE I2C_CLOCK PORTC.1#DEFINE I2C_DISABLE_INTERRUPTS ONGLCDPrint(0,0,"i2C GLCD TEST")// PIC PPS Tool version: 0.0.6.5#startup InitPPS, 85#define PPSToolPart 18F27Q84SubInitPPS// Module: SPI1SPI1SDIPPS=0x0016// RC6 > SDI1RC5PPS=0x0032// SDO1 > RC5RC4PPS=0x0031// SCK1 > RC4SPI1SCKPPS=0x0014// RC4 > SCK1 (bi-directional) EndSub'ThisisaPPSchip,so,needstomakethePPSmatchtheseassignments#DEFINE SPI_DI portC.6 //SDIx SO/Pin2#DEFINE SPI_DO portC.5 //SDOx SI/Pin5#DEFINE SPI_SCK portC.4 //SCKx SCK/Pin6#DEFINE SPI_CS portC.3 // CS/Pin1#DEFINE HWSPIMode MasterFast#DEFINE HWSPIClockMode SPI_SS_0 + SPI_CPOL_0 + SPI_CPHA_0SPIMode(HWSPIMode,HWSPIClockMode)DimMydataasByte=0//WRITING AND READING BYTES (23LCV1024 1Mbit RAM CHIP) with DIRECT COMMANDS via the HWSPIport: //WRITE BYTE:SPI_CS=0FastHWSPITransfer0x2// WRITE instructionFastHWSPITransfer0x0// MSB 24bit address 0x000008FastHWSPITransfer0x0// ||FastHWSPITransfer0x8// LSBFastHWSPITransfer0xAF//Write data 0xAF=175SPI_CS=1//Write sequence is terminated//READ BYTE:SPI_CS=0FastHWSPITransfer0x3//READ instructionFastHWSPITransfer0x0// MSB 24bit address 0x000008FastHWSPITransfer0x0// ||FastHWSPITransfer0x8// LSB SPITransfer0x0,Mydata//Dummy address for data to be shifted outSPI_CS=1//Read sequence is terminatedGLCDPrint(0,20,Mydata)
Last edit: Roger Jönsson 2 days ago
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Here is a an easy to understand example sending and receiving data over Hardware SPI.
I needed something to test on, so I took a RAM (chip 23LCV1024 1Mbit) and after som hair loss, I had managed how to write data on to it, verifying by reading the data back. I hope it will be useful to someone else.
Last edit: Roger Jönsson 2 days ago
Changes to make sequential write and read:
Last edit: Roger Jönsson 2 days ago