OpenEdv-开源电子网

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

STM32F103ZET6与DAC7512芯片SPI通讯程序

[复制链接]

3

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2016-10-20
在线时间
32 小时
发表于 2017-3-1 11:37:02 | 显示全部楼层 |阅读模式
1金钱
#include "DAC7512.h"

static void SPI_GPIO_Config(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;

        DAC7512_SPI_GPIO_APBxClock_FUN ( DAC7512_SPI_GPIO_CLK, ENABLE );
        DAC7512_SPI_APBxClock_FUN ( DAC7512_SPI_CLK, ENABLE );
       
  GPIO_InitStructure.GPIO_Pin   = DAC7512_SPI_SCK_PIN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;               
  GPIO_Init(DAC7512_SPI_SCK_PORT, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin   = DAC7512_SPI_MOSI_PIN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;               
  GPIO_Init(DAC7512_SPI_MOSI_PORT, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin   = DAC7512_SPI_CS_PIN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;               
  GPIO_Init(DAC7512_SPI_CS_PORT, &GPIO_InitStructure);
       
//        DAC7512_SPI_CS_HIGH;
}

static void SPI_Mode_Config(void)
{
  SPI_InitTypeDef  SPI_InitStructure;

        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2 ;
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge ;
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low ;
        SPI_InitStructure.SPI_CRCPolynomial = 0;
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
        SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;       
       
        SPI_Init(DAC7512_SPIx,&SPI_InitStructure);
        SPI_Cmd(DAC7512_SPIx,ENABLE);
}

void SPI_DAC7512_Init(void)
{       
        SPI_GPIO_Config();
        SPI_Mode_Config();
}

static void SPI_DAC7512_Send_Byte(uint16_t data)
{
        while(SPI_I2S_GetFlagStatus(DAC7512_SPIx,SPI_I2S_FLAG_TXE) == RESET)
        {
        }
        SPI_I2S_SendData (DAC7512_SPIx,data);
}

void SPI_Write_Enable(uint16_t data)
{
                //片选使能
        DAC7512_SPI_CS_LOW;
        SPI_DAC7512_Send_Byte(data);
        //DAC7512_SPI_CS_HIGH        ;
}

这样写不知道为什么没有输出,三个信号线都有信号啊


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-1 22:25:51 | 显示全部楼层
回复

使用道具 举报

3

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2016-10-20
在线时间
32 小时
 楼主| 发表于 2017-3-2 10:53:05 | 显示全部楼层

很急,大神可以帮忙看看吗
回复

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2016-1-13
在线时间
20 小时
发表于 2017-3-9 08:52:36 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 10:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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