|
|
View previous topic :: View next topic |
Author |
Message |
maxrate
Joined: 01 Jan 2007 Posts: 38 Location: Mississauga, Ontario, Canada
|
dsPIC33 remappable pins and SPI bus in hardware mode |
Posted: Sun Oct 25, 2015 5:06 pm |
|
|
Hello - I'm using a dsPIC33FJ12GP202 chip for the first time with the Microchip 16-Bit 28-Pin Starter Development Board. I'd like to take advantage of the hardware SPI bus interface. Having a tough time finding the appropriate pins to use the SPI bus with. I figure I must use the re-mappable pins. My question is, will CCS compiler take advantage of the hardware SPI bus when I specify arbitrary pins as the MISO, MOSI, CLK, SS channels? I'd like to avoid using the software driven SPI bus. Thanks everyone. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19552
|
|
Posted: Mon Oct 26, 2015 2:26 am |
|
|
The way to use remapping, is always to setup the pins to the peripheral, and then setup the peripheral.
So the sequence becomes:
Code: |
#pin_select SDO2=PIN_B6
#pin_select SDI2=PIN_B5
#pin_select SCK2=PIN_B4 //setup SPI2 for SD card
#pin select SS2OUT=PIN_B2
#use SPI(SPI2, //then the rest of the SPI settings)
|
So this sets up the SPI to use SPI2, on the pins given.
Now the peripheral pin names are given at the top of the .h file for the processor. So for your chip:
Quote: |
// #pin_select function=pin
// Valid Pins:
// PIN_B0,PIN_B1,PIN_B2,PIN_B3,PIN_B4,PIN_B5,PIN_B6,PIN_B7,PIN_B8,PIN_B9,
// PIN_B10,PIN_B11,PIN_B12,PIN_B13,PIN_B14,PIN_B15
// Input Functions:
// INT1,INT2,T2CK,T3CK,T4CK,T5CK,IC1,IC2,IC3,IC4,IC5,OCFA,OCFB,U1RX,U1CTS,
// U2RX,U2CTS,SDI1,SCK1IN,SS1IN,SDI2,SCK2IN,SS2IN,C1RX,IC7,IC8,CSDI,CSCK,COFS,
// FLTA1,FLTA2,QEA1,QEB1,INDX1,QEA2,QEB2,INDX2,T1CK,FLT1,FLT2,FLT3,FLT4,FLT5,
// FLT6,FLT7,FLT8,SYNCI1,SYNCI2
// Output Functions:
// NULL,C1OUT,C2OUT,U1TX,U1RTS,U2TX,U2RTS,SDO1,SCK1OUT,SS1OUT,SDO2,SCK2OUT,
// SS2OUT,OC1,OC2,OC3,OC4,OC5,C1TX,CSDO,CSCKOUT,COFSOUT,UPDN1,UPDN2,CTPLS,
// C3OUT,SYNCO1,REFCLKO,CMP1,CMP2,CMP3,CMP4,PWM4H,PWM4L
|
This also lists what pins can be used (on some chips 'beware' there are two 'groups' of pins, and limitations on what can go to each group - data sheet...).
Once the pin is selected, you then configure the peripheral, but use the peripheral name, _not_ the pin numbers. Since you are setting the SPI to talk to the hardware peripheral, it is forced to use the hardware - no possibility of 'accidentally' selecting software.
I'm setting up SS2OUT (assuming you are master). On the slave you need to setup the input instead. |
|
|
maxrate
Joined: 01 Jan 2007 Posts: 38 Location: Mississauga, Ontario, Canada
|
|
Posted: Mon Oct 26, 2015 6:57 am |
|
|
Ttelmah - thank you for the explanation. I understand now that the pins are simply remappable (as long as the pin supports the function and direction - I/O) and will work with the parts onboard hardware peripheral driver(s).
I am not clear on your example in terms of why you are setting up SPI using SPI2. I'm not certain if you are attempting to illustrate that it is mandatory to use SPI2 vs SPI1 for the hardware peripheral or you were illustrating the flexibility of the part or if you were showing how to address the second SPI peripheral in the C code. Please forgive my ignorance here.
Looking forward to your reply. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19552
|
|
Posted: Mon Oct 26, 2015 7:51 am |
|
|
No, it was just an example.
In my case I'm using SPI1 for something else, and SPI2 for an SD card. I just copied the SPI2 settings. |
|
|
maxrate
Joined: 01 Jan 2007 Posts: 38 Location: Mississauga, Ontario, Canada
|
|
Posted: Mon Oct 26, 2015 7:52 am |
|
|
Good to know, thanks again! |
|
|
|
|
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
|