这几天实验室比较忙,所以博客这边停了一下,继续吧。
继串口中断后,大家可以尝试单片机间串口通信,这里就不再多赘述。串口完了之后,我接着学的就是SPI通信了,作为hello moto公司推出的这种4线全双工通信,很节约PCB布局空间,但缺点就是没有指定的流控制,没有应答机制来确定信号收到与否,比I2C在硬件上要稍微复杂一点。
话不多说,上程序最有助理解。下面是SPI通信的发送端的SPI初始化主程序。
void SPI_Configuration(void)
{
//定义GPIO,SPI结构体
GPIO_InitTypeDef GPIO_InitStructure;
SPI_InitTypeDef SPI_InitStructure;
//开PA口复用时钟,初始化系统时钟
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO|RCC_APB2Periph_SPI1,ENABLE);
//配置PA5,PA6,PA7即SPI1__SCK,SPI1_miso,SPI1_mosi
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);
&n

本文介绍了如何在STM32中设置和使用SPI通信,包括SPI初始化、发送端程序和中断配置。通过示例代码解析了SPI的读写过程,并提出了在SPI通信中遇到的两个疑问:CPOL配置对通信的影响以及SPI读写为何要同时进行。
最低0.47元/天 解锁文章
1326

被折叠的 条评论
为什么被折叠?



