CC1110 SPI 口程序
电路连接如下图:
SSN:P04 SCK:P05
MOSI:P03 MISO:PO2
和硬件SPI口有关的配置为P口的功能,
SPI口所在位置,SPI口的波特率,时钟
极性SPOL,时钟相伴CPHA,中断,当然还
有主从设备等设置.如果是和别的设备
传数的话,还应该注意高/低位先传的
问题。文字上就说这么多,再贴一段
程序:
/***********************************************************/
//将芯片初始化到主/从模式
void INIT_SPI(void)
{
IO_FUNC_PORT_PIN(0,2,IO_FUNC_PERIPH);
IO_FUNC_PORT_PIN(0,3,IO_FUNC_PERIPH);
//IO_FUNC_PORT_PIN(0,4,IO_FUNC_PERIPH);
IO_FUNC_PORT_PIN(0,5,IO_FUNC_PERIPH);
IO_PER_LOC_SPI0_AT_PORT0_PIN2345(); //串口0,位置1
#ifdef SPI_MASTER_MODE
SPI_SETUP(0,57600,MY_SPI_M_OPTIONS); //SPI0,57600,
IO_FUNC_PORT_PIN(0,4,IO_FUNC_GIO);
IO_DIR_PORT_PIN(0,4,IO_OUT);
P0_4 = 0;
#else
SPI_SETUP(0,57600,MY_SPI_S_OPTIONS);
IO_FUNC_PORT_PIN(0,4,IO_FUNC_PERIPH);
#endif
INT_ENABLE(INUM_URX0,INT_ON);
INT_ENABLE(INUM_UTX0,INT_ON);
INT_GLOBAL_ENABLE(INT_ON);
}
/**********************************************************************/
//主模式发一字节
void SPI0_M_SEND_BYTE(BYTE data)
{
while(USART0_BUSY());
U0DBUF = data;
while(!USART0_BYTE_TRANSMITTED());
U0CSR &= ~0x02;
}
void SPI0_S_SEND_BYTE(BYTE data)
{
while(USART0_BUSY());
U0DBUF = data;
}
================================
emot 9月9日更新
用户223432 2009-7-16 09:29