|
|
View previous topic :: View next topic |
Author |
Message |
arritsas
Joined: 16 Feb 2012 Posts: 4
|
PIC24FJ128GA006 with a extern flash memory |
Posted: Wed Feb 22, 2012 3:00 am |
|
|
Hello,
I am newbie with a 24FJ128GA006 PIC and I would like to know how I have to initialized the SPI in order to use it to send and received blocks of data from a SST25vf family's device.
I have used this line in order to declared the SPI params.
#USE SPI (MASTER, SPI1,BAUD=16000000,DO = PIN_F3,DI = PIN_F2,CLK = PIN_F6, MODE=0, BITS=8, STREAM=FLASH_STREAM)
Am I forgetting anything or not taking into account something?
I want to use the driver included in ccs and its functions, called sst25vf.c.
What I am exactly trying...
Code: |
#include <24FJ128GA006.h>
#include <sst25vf.c>
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //Crystal osc 16MHz,High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES DEBUG //Debug mode for use with ICD
#FUSES NOWRT //Program Memory Write Protected
#FUSES NOIESO// #FUSES IESO //Internal External Switch Over mode enabled
#FUSES NOJTAG //JTAG disabled
#use delay(clock=32000000)
#define FLASH_STREAM SPI_1
#USE SPI (MASTER, SPI1,BAUD=16000000,DO = PIN_F3,DI = PIN_F2,CLK = PIN_F6, MODE=0, BITS=8, STREAM=FLASH_STREAM)
void main()
{
int aux;
int title;
ext_flash_init();//intialization of the comunication required
aux=0xF4;// a value which is going to be saved
ext_flash_write(0x000006, &aux,2);//writing in the flash
delay_ms(100);
ext_flash_read(0x000006,title,2);//reading from the flash the same direction
}
|
Could someone help me? |
|
|
FvM
Joined: 27 Aug 2008 Posts: 2337 Location: Germany
|
|
Posted: Wed Feb 22, 2012 3:45 am |
|
|
A SPI clock of 16 MHz isn't available with 16 MHz CPU clock. I don't know, if #use spi selects the highest available clock frequency instead.
According to the comments in the sst25 driver, write protection must be unlocked before writing to the device. Please check. |
|
|
arritsas
Joined: 16 Feb 2012 Posts: 4
|
|
Posted: Wed Feb 22, 2012 4:39 am |
|
|
FvM wrote: | A SPI clock of 16 MHz isn't available with 16 MHz CPU clock. I don't know, if #use spi selects the highest available clock frequency instead.
According to the comments in the sst25 driver, write protection must be unlocked before writing to the device. Please check. |
Ok, I have replaced the baud parameter. And changed it in order to take the default one.
But, I am not sure if I understand what you are telling about the write protection, do I must included the ext_flash_protect() function when I start the application? And if it like this unlock all the memory? |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19513
|
|
Posted: Wed Feb 22, 2012 9:16 am |
|
|
I wouldn't explicitly select the IO pins. The syntax for #use SPI, is to _either_ specify the pins, _or_ use SPI1/SPI2, which automatically selects the corresponding hardware pins.
Unless you are using the stream parameter (which the library doesn't), I'd also not have a stream name. Particularly, since I'm not sure of having the name given as the stream name already #defined to something else.
The big one though is the write protection as Fvm points out. Look at the header of the driver:
"//// (Note that this flash protects all locations on power up) ////"
ext_flash_protect(FLASH_PROTECT_NONE);
needed after init, before doing anything else.
Best Wishes |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19513
|
|
Posted: Wed Feb 22, 2012 9:26 am |
|
|
Just as a comment, I'd also select explicitly a 'legal' clock rate. I'd not be _sure_ the compiler would know that 1/1 and 1/1 for primary and secondary prescalers is 'invalid' at 16MHz (table 15-1 data sheet), so select 8MHz, which is the fastest available rate.
Best Wishes |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|