关于MAX5741AUB的坑

最近使用一款美信的SPI转DA的芯片MAX5741AUB,用立创EDA画的板子,下面是电路:在这里插入图片描述
本来以为会很轻松,结果搞了两天,当时想在网上找例程,发现没有,想着就弄完写一个。
在这里插入图片描述

按这个芯片时序图把时序写一下,我用的模拟spi:

void spi_start(void)
{
	SET_LSCE_LOW; 
}
void spi_stop(void)
{
	SET_LSCE_HIGH;
}
static void spi_write_data(unsigned int data,unsigned int len)
{
	   int i;

    for(i=len-1;i>=0;i--)
    {        
         
        if((data>>i)&0x0001)
            SET_LSDA_HIGH;
        else
            SET_LSDA_LOW;
        
				   SET_LSCK_HIGH;
				spi_delay(1);
            SET_LSCK_LOW;
        spi_delay(1);

		}
}
static void write_lcd_cmd(unsigned int cmd)
{
    unsigned int x;
	  spi_start();
	  spi_delay(1);
	  
    x = 0x0000|cmd;
    spi_write_data(x,16);
}
static void write_data(unsigned char data)
{
    unsigned int x;
    spi_delay(1);
    x = 0x0100 | data;
    spi_write_data(x,9);
}
void send_data(unsigned int cmd)
{
	write_lcd_cmd(cmd);
  spi_stop();
}
int16_t send_dac(int16_t channel,int16_t valu)
{
	int16_t data=0x0000;
	data=(channel<<12)+valu;
	send_data(data);
  return 1;
}

代码是网上找的spi屏幕代码,有些没用到,大家酌情复制
main函数里面调用

spi_gpio_init();
delay_1ms(150);
	send_data(0xf010);
	delay_1ms(150);
	send_data(0xcffc);
	send_data(0xc000);

在这里插入图片描述

在这里插入图片描述
之前按两张表发的0xcffc,理论上来说是四个通道全部输出高,但是怎么都没输出,我原来以为SPI波形有问题,用示波器看的波形:
在这里插入图片描述
黄色为片选,下降沿有延迟是用的别的板子上的单片机,有电容没拆,发现波形很漂亮,没什么问题。最后又仔细想了想这两个命令表,想着分开试试,先发0xf010唤醒打开全部通道,再发0xcffc写入电压指令,电压就可以输出。仔细看了指令表的control列知道咋回事了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值