打印
[其他产品]

求证ATmega16与TLC5618的D/A数模转换哪里不对

[复制链接]
1673|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
classroom|  楼主 | 2024-12-16 14:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include
#include   
#define uint unsigned int
#define uchar unsigned char
#define   SPIF   7
#define   ss     4    //PB4
#define   mosi   5   //PB5
#define   sck    7   //PB7
void spi_init()  //初始化
{
    DDRB=0xFF;   //端口设置?不懂为啥这样设
    PORTB=0x00;  //这是PB全为高电位输出:即SCK,MOSI为高电位初始化
    SPSR=0x00;  //状态寄存器全0,这是为啥
        SPCR=0x50;   //主机模式 方式1 ocs/16   SPI控制寄存器设置01010101,一般情况需要改动吗?
}
void  DAC_TLV5618(uint temp)
{
        PORTB&=~(1<         SPDR=(uchar)( temp&&0xff00)>>8;
        while(!SPSR&(1<         SPSR=(uchar)( temp&&0x00ff);
        while(!SPSR&(1<         //PORTB|= (1< }
void main()
{
        //delay_ms(500);
        spi_init();
        DAC_TLV5618(0x4800);
        while(1);
}

使用特权

评论回复
沙发
xuanhuanzi| | 2024-12-19 11:04 | 只看该作者
Spi接口就看时序啊

使用特权

评论回复
板凳
稳稳の幸福| | 2024-12-21 17:51 | 只看该作者
SPI配置对了吗?这个你先确保SPI是对的

使用特权

评论回复
地板
小灵通2018| | 2024-12-25 14:37 | 只看该作者
这个系列支持MCC不支持啊?

使用特权

评论回复
5
小灵通2018| | 2024-12-25 14:37 | 只看该作者
你这个写法也没法看啊,你要按照SPI协议写啊,先定义好拉低拉高的宏啊。

使用特权

评论回复
6
dongnanxibei| | 2024-12-25 20:36 | 只看该作者
这个应该跟TLC2543一样操作的吧?

使用特权

评论回复
7
稳稳の幸福| | 2024-12-29 12:32 | 只看该作者
要抽象出来啊,你这么做,很难看懂。

使用特权

评论回复
8
lamanius| | 2025-2-18 12:49 | 只看该作者
DDRB = 0xFF 将 PORTB 的所有引脚设置为输出模式。但对于 SPI 通信,MISO(主输入从输出)引脚应该是输入模式。DDRB = (1 << mosi) | (1 << sck) | (1 << ss);  // 仅设置 MOSI、SCK 和 SS 为输出模式

使用特权

评论回复
9
ex7s4| | 2025-2-18 14:06 | 只看该作者
SPCR = 0x50 的设置可能不正确。0x50 对应的二进制是 01010000,表示:SPI 使能(SPE = 1)。机模式(MSTR = 1)。时钟极性(CPOL = 0)。钟相位(CPHA = 0)。时钟分频(SPR1:0 = 00,即 fosc/4)。根据 TLC5618 的时序要求,可能需要调整时钟极性和相位。通常 TLC5618 使用 CPOL = 0 和 CPHA = 0,但时钟分频可能需要调整。

使用特权

评论回复
10
b5z1giu| | 2025-2-18 15:19 | 只看该作者
SPSR = (uchar)(temp & 0x00ff); 是错误的。SPSR 是状态寄存器,不能直接赋值。temp & 0xff00 和 temp & 0x00ff 的位操作有误。while (!(SPSR & (1 << SPIF))); 的写法不标准。

使用特权

评论回复
11
suw12q| | 2025-2-18 16:21 | 只看该作者
DAC_TLV5618(0x4800); 的调用是正确的,但缺少延时或其他操作,可能导致无法观察到输出变化。其实可以添加延时或循环输出不同的值

使用特权

评论回复
12
w2nme1ai7| | 2025-2-18 20:35 | 只看该作者
TLC5618 的时序,确保 SPI 的时钟频率和时序符合 TLC5618 的要求。

使用特权

评论回复
13
g0d5xs| | 2025-2-18 21:42 | 只看该作者
电源和地连接,检查 TLC5618 的电源和地是否连接正确

使用特权

评论回复
14
d1ng2x| | 2025-2-18 22:58 | 只看该作者
参考电压,确保 TLC5618 的参考电压(VREF)设置正确

使用特权

评论回复
15
tax2r6c| | 2025-2-19 09:16 | 只看该作者
你去找个D/A这个芯片的相关的驱动函数啊

使用特权

评论回复
16
p0gon9y| | 2025-2-19 10:22 | 只看该作者
这种寄存器的操作,不懂啊,不过你可以看看你的SPI这方面

使用特权

评论回复
17
kaif2n9j| | 2025-2-19 12:50 | 只看该作者
端口设置是配置SPI,就默认的就行,一般来说

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

451

主题

2518

帖子

1

粉丝