OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2647|回复: 0

SPI在写数据时没办法讲数据写到DR寄存器里面

[复制链接]
回帖奖励 5 金钱 回复本帖可获得 5 金钱奖励! 每人限 1 次

14

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2019-7-25
在线时间
18 小时
发表于 2020-1-9 20:26:05 | 显示全部楼层 |阅读模式
本帖最后由 楚子航 于 2020-1-9 21:37 编辑

在用STM32的SPI的时候,数据为什么没有办法写到DR寄存器里面啊
感觉自己SPI的配置也没有错啊,是哪里忘了配置了吗?

这是我初始化的代码:
void SPI1_Init()
{
   GPIO_InitTypeDef GPIO_InitStu;
   SPI_InitTypeDef SPI_InitStu;

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打开GPIO时钟使能
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);//打开SPI1时钟使能

   GPIO_InitStu.GPIO_Mode=GPIO_Mode_AF_PP;
   GPIO_InitStu.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//PA5,PA6,PA7复用推挽输出
   GPIO_InitStu.GPIO_Speed=GPIO_Speed_50MHz;
   GPIO_Init(GPIOA,&GPIO_InitStu);

   SPI_InitStu.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256;//256分频
   SPI_InitStu.SPI_CPHA=SPI_CPHA_1Edge;//第一个边沿采集数据,即上升沿
   SPI_InitStu.SPI_CPOL=SPI_CPOL_Low;//未发送数据时为低电平
   SPI_InitStu.SPI_CRCPolynomial=7;//CRC值计算的多项式
   SPI_InitStu.SPI_DataSize=SPI_DataSize_8b;//每次发送8位数据
   SPI_InitStu.SPI_Direction=SPI_Direction_2Lines_FullDuplex;//串行发送数据
   SPI_InitStu.SPI_FirstBit=SPI_FirstBit_MSB;//先发送高位
   SPI_InitStu.SPI_Mode=SPI_Mode_Master;//做主机
   SPI_InitStu.SPI_NSS=SPI_NSS_Soft;//NSS信号由软件控制
   SPI_Init(SPI1,&SPI_InitStu);//SPI初始化

   SPI_Cmd(SPI1,ENABLE);//使能SPI1

   SPI_I2S_SendData(SPI1,0xff);
}


void SPI1_SendData(u8 dat)
{
   u8 i;
   while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET)
   {
     i++;
    if(i>250) return;
   }
   SPI_I2S_SendData(SPI1,dat);
   i=0;
}

b94968a7a3a2d609c92bf0b5d1acd1a.png
c8079f33edcdfb39fb1161d68db000f.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-19 22:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表