OpenEdv-开源电子网

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

STM32SPI1的MOSI发送不成功

[复制链接]

5

主题

19

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2016-10-6
在线时间
23 小时
发表于 2018-7-19 13:26:57 | 显示全部楼层 |阅读模式
10金钱
如图:

黄色CS,蓝色为MOSI,紫色SCK,MOSI为PA7-32引脚,此引脚只接了示波器,默认上拉,示波器中可以看到蓝色高电平波形有丁点变化。之前用SPI2已经调试通过了,只是用到的SPI通讯太多,两个都需要调通。MISO可以闲置不用。
PA7引脚是不是坏掉了??


void DAC_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        SPI_InitTypeDef SPI_InitStructure;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//使能 GPIOA 时钟
        RCC_APB1PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);// 使能 SPI1 时钟
        //GPIOA5,6,7 初始化设置: 复用功能输出
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//PA5,6,7
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
        GPIO_Init(GPIOA, &GPIO_InitStructure);// 初始化
        //GPIOA4
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;//PA4
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化
        DAC_CS = 1;
        //配置引脚复用映射
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_SPI1); //PA5 复用为 SPI1        SCK
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_SPI1); //PA6 复用为 SPI1        MISO
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_SPI1); //PA7 复用为 SPI1        MOSI
        //这里只针对 SPI 口初始化
        //RCC_APB1PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE);                                //复位 SPI1
        //RCC_APB1PeriphResetCmd(RCC_APB2Periph_SPI1,DISABLE);                        //停止复位 SPI1
        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //设置 SPI 全双工
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                                                 //设置 SPI 工作模式:主 SPI
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;                                 //设置 SPI 的数据大小: 16 位帧结构
        //串行同步时钟的空闲状态为 低 电平
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;                                                                //串行同步时钟的空闲状态为 低 电平
       
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;                                                         //数据捕获于第二个时钟沿
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                                                                 //NSS 信号由软件件管理
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; //预分频 256
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                                 //数据传输从 MSB 位开始
        SPI_InitStructure.SPI_CRCPolynomial = 7;                                                                         //CRC 值计算的多项式
        SPI_Init(SPI1, &SPI_InitStructure);                                                                                         //根据指定的参数初始化外设 SPI1 寄存器
        SPI_Cmd(SPI1, ENABLE);                                                                                                                                                 //使能 SPI1
       
        SPI_DAC_SendByte(DAC_WTM);                //[15-12]:1001 [11-0]:0000000000000        WTM模式DAC输出更新
        delay_us(20);
        SPI_DAC_SendByte(DAC_A_2V8);
        delay_us(20);       
}

void SPI_DAC_SendByte(u16 byte)
{
  DAC_CS = 0;
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);  //发送缓存空时向下执行
  SPI_I2S_SendData(SPI1, byte);
  //while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); //等待接收完
        delay_us(150);
  DAC_CS = 1;
        delay_us(300);
}


413641981635146984.jpg
892687533200984148.jpg

最佳答案

查看完整内容[请看2#楼]

PA7引脚坏了。。。。用了另外一块板子,波形应该没问题
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

19

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2016-10-6
在线时间
23 小时
 楼主| 发表于 2018-7-19 13:26:58 | 显示全部楼层
PA7引脚坏了。。。。用了另外一块板子,波形应该没问题
670336430388076691.jpg
回复

使用道具 举报

5

主题

19

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2016-10-6
在线时间
23 小时
 楼主| 发表于 2018-7-19 13:49:33 | 显示全部楼层
顶一顶啦。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 00:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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