OpenEdv-开源电子网

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

STM32F103C8T6与TLC5618通信的问题

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2016-7-4
在线时间
7 小时
发表于 2016-8-27 11:26:24 | 显示全部楼层 |阅读模式
10金钱
STM32F103C8T6与TLC5618实现DA输出功能,现在问题是TLC5618没有任何输出,OUTA和OUTB输出都是0V,
找不到问题原因,希望高手能指点一下软硬件方面有什么错误。

原理图:

STM32F103C8T6 SPI1

STM32F103C8T6 SPI1



TLC5618.jpg
TLC5618时序图和表格
TLC5618时序图.gif
TLC5618表格1.gif
TLC5618表格2.gif
TLC5618输入数据格式

TLC5618数据格式

TLC5618数据格式

代码:
(1)SPI1初始化:
void SPI1_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        SPI_InitTypeDef  SPI_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 |GPIO_Pin_6| GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;//单工输出
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;     //主机模式
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b; //16位SPI
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;       //时钟悬空高电平
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;      //在第一个时钟(下降沿)采集数据
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                  //Nss使用软件控制
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//从最高位开始传输
        SPI_InitStructure.SPI_CRCPolynomial = 7;
       
        SPI_Cmd(SPI1, ENABLE);
        SPI_Init(SPI1, &SPI_InitStructure);

        GPIO_SetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_7);
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
}  


(2)TLC5618 DA输出函数
#define        DA_Start()        GPIO_ResetBits(GPIOA,GPIO_Pin_4)
#define        DA_End()        GPIO_SetBits(GPIOA,GPIO_Pin_4)

void        DA_Output(uint16_t v0,uint16_t v1)
{
        DA_Start();
        SPI1_WriteReadData(0x0000|(v1&0x0FFF));
        DA_End();

        DelayMS(1);

        DA_Start();
        SPI1_WriteReadData(0x8000|(v0&0x0FFF));
        DA_End();
}

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-8-29 00:27:55 | 显示全部楼层
回复

使用道具 举报

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2015-12-18
在线时间
14 小时
发表于 2017-1-9 20:04:13 | 显示全部楼层
楼主解决问题了吗?把方法分享下啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 01:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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