Home > other >  SPI xc1004 four axis motion control chip and MCU application example
SPI xc1004 four axis motion control chip and MCU application example

Time:11-18

Motion control programming reference
By 51 single chip microcomputer control of motion control chip SPI communication program example,
(from the product's official website: http://www.lf-control.com)


#include
#include
//MCU: stc8f2k08s2
SFR P0M1=0 x93;
SFR P0M0=0 x94;
SFR P1M1=0 x91;
SFR P1M0=0 x92;
SFR P2M1=0 x95;
SFR P2M0=0 x96;
SFR P3M1=0 xb1;
SFR P3M0=0 sets;
SFR P4M1=0 xb2;
SFR P4M0=0 xb4;
SFR P5M1=0 xc9;
SFR P5M0=0 xca;
SFR P6M1=0 XCB;
SFR P6M0=0 XCC;
SFR P7M1=0 xe1;
SFR P7M0=0 xe2;
SFR P5=0 xc8;
SFR SPSTAT=0 XCD;
SFR SPCTL=0 xce;
SFR SPDAT=0 XCF;
SFR IE2=0 xaf;
SFR AUXR=0 x8e;
SFR T2H=0 xd6;
SFR T2L=0 xd7;
SFR P_SW2=0 xba;




# define CKSEL (* (unsigned char volatile xdata *) 0 xfe00)
# define CKDIV (* (unsigned char volatile xdata *) 0 xfe01)
# define IRC24MCR (* (unsigned char volatile xdata *) 0 xfe02)
# define XOSCCR (* (unsigned char volatile xdata *) 0 xfe03)
# define IRC32KCR (* (unsigned char volatile xdata *) 0 xfe04)


16000000 ul////# define FOSC using external 16 m crystals
24000000 ul//# define FOSC use internal 24 m crystals
# define BRT (65536 - FOSC/115200/4)//define 115200 baud rate

P1 sbit b2=^ 1;
Sbit b1=P5 ^ 5;
Sbit led=P3 ^ 5;

Sbit cs3=P3 ^ 3;
Sbit cs2=P3 ^ 2;
Sbit cs1=p ^ 2;
Sbit SCK=P1 ^ 5;
Sbit in P1=^ 4;
P1 sbit out=^ 3;
# define SPI3_CSHIGH cs3=1//cs3
# define SPI3_CSLOW cs3=0

# define SPI2_CSHIGH cs2=1//cs2
# define SPI2_CSLOW cs2=0

# define SPI1_CSHIGH cs1=1//cs1
# define SPI1_CSLOW cs1=0

# define SPI_SCKHIGH SCK=1//SCK
# define SPI_SCKLOW SCK=0
# define SPI_OUTHIGH out=1
# define SPI_OUTLOW out=0//MOSI
# define SPI_IN in//MISO

Unsigned char inbuf [50].
Unsigned char b1_state=0;

Void initial ()
{
P1M1=0;
P1M0=0 x2c;//pin analog communication, MOSI, SCK, CS is set to push pull output

SPI1_CSHIGH;//CS when not in use as high
SPI2_CSHIGH;
SPI3_CSHIGH;
SPI_SCKLOW;//SCK idle state must be as low level,


//SPCTL=0 xd0;//can make SPI host mode
//SPSTAT=0 xc0;//clear interrupt flag

}

Void init_uart ()
{

SCON=0 x50;
T2L=BRT;
T2H=BRT & gt; & gt; 8;
AUXR=0 x15;

}



/*
A serial port to send a byte,
*/
Void USART_Txbyte (unsigned char I)
{
SBUF=I;
While (TI==0);
TI=0;
}


/*
A serial port to send a string of data,
*/
Void USRAT_transmit (unsigned char * fdata, unsigned char len)
{
unsigned char i;

for(i=0; i{
USART_Txbyte (fdata [I]);
}

}



Void delay_nus (unsigned long n)
{
Unsigned long j;
While (n -)

{
J=1;
While (j);
}
}

//delay n ms

Void delay_nms (unsigned long n)

{
While (n -)
Delay_nus (1000);

}



/*
The function name: SPI_SendData
Function: software simulation SPI communication sending and receiving an 8-bit byte data,
If you want to use hardware SPI, single chip microcomputer as the host, motion control chip for from machine, CPHA=0, CPOL=0, high in the former, SPI data width of 8 bits,
Idle state under SCM SCK pin must be a low level, each instruction will buy low, CS pin before sending the instruction to send after the completion of the CS must be high,
Need to have the time interval between each instruction, recommend delay more than 1 ms,

*/

Unsigned char SPI_SendData (unsigned char outdata)
{

Unsigned char RecevieData=https://bbs.csdn.net/topics/0, I;
SPI_SCKLOW;
//_nop_ (); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

for(i=0; i<8; I++)
{
SPI_SCKLOW;
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
If (outdata& 0 x80)
{
SPI_OUTHIGH;
}
The else
{
SPI_OUTLOW;
}
Outdata<=1;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
SPI_SCKHIGH;//

RecevieData & lt; <=1;

If (SPI_IN)
{
RecevieData |=1.
}

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
SPI_SCKLOW;
}

Return RecevieData;

}


/*
Unsigned char SPI_SendData (unsigned char outdata)
{

Unsigned char RecevieData=https://bbs.csdn.net/topics/0, I;

SPDAT=outdata;//send data
while (! (SPSTAT & amp; 0 x80));//query complete sign
SPSTAT=0 xc0;//clear interrupt flag
Return SPDAT;

}
*/



/*
The function name: enabled_cs
Function: SPI motion control module can make the corresponding chip module of CS feet
Parameters:
Cardno card number
Different pin to control chip MCU CS feet, so that multiple chips are used, connection module
*/
Void enabled_cs (unsigned char cardno)
{
If (cardno==1)
{
SPI1_CSLOW;
nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
  • Related