大家好,我最近在调试一个SPI的从机 用的是STM8S103,能收到主机发送来的数据但是我还想发送给主机数据,SPI只有在主机发送数据的时候才会有SCK信号,要在接收的同时来发送,这一点就不明白了,怎么写才能完成这样的操作。例程如下
/*******************************************************
函数名称: SPI主设备初始化
函数功能:
出入口参数: 无
备注:
*********************************************************/
void SPI_Init_Master(void)
{
SPI_CR1=0x0c; //先发送MSB,关闭SPI,波特率为f/4,配置为主设备,空闲低电平,第一个时钟周期开始采样
//第一个时钟边缘开始数据采样
SPI_CR2=0x02; //软件管理片选信号
SPI_ICR=0Xc0; //允许接收中断
SPI_CR1|=0x40; //开启SPI
}
uchar a1,b1;
/*******************************************************
函数名称: SPI
函数功能:
出入口参数: 无
备注:
*********************************************************/
#pragma vector=SPI_OVR_vector
__interrupt void SPI_IRQHandler(void)
{
while((SPI_SR&0x01)==0x01) //判断接收区是否为空,即判断是否接收到数据
a1=SPI_DR;
delay(1);
while((SPI_SR|0x80)==0x80); //等待通信结束
b1=a1; //将接受到的数取反后发送给主设备
//SPI_DR=b1; //将要发送的b放到SPI_DR中
//delay(1); //延时一会,等待发送完毕
// while((SPI_SR|0x80)==0x80); //等待通信结束 */
//delay(1);
} |