glinfei 发表于 2023-10-31 11:38 还真是,按你的方法先发8位再发剩余2位测试成功。为什么不能连续发10位呢,要分开发? |
lksbbs 发表于 2023-10-30 15:26 要使用SPI模式,MAX5481_SPI必须置1,未通讯前,MAX5481_CS也是置1,图(3)的Figure4时序图,MAX5481_CLK也是置1的。但是Figure5 的时序图MAX5481_CLK却是置0,改过后数据也是没成功写入芯片。 |
xianfajushi 发表于 2023-10-30 07:43 有测过,L端接地,H端接+5V,W端悬空,改变W端(value的值),测量Vwl电压只有十几毫伏,并且数值不变 |
试一下如下代码:
DIN的数据在CLK的上升沿被置入,看你的代码可能第一位被吃掉了。 |
| 是不是哪个地方没有配置对呀,或者是延时做的不对 |
|
void MAX5481_Init(void) { MXA5481_SPI=1; MXA5481_CS=1; MXA5481_CLK=1; 全部等于1 这里不对吧??? |
npn 发表于 2023-10-30 08:23 芯片用的是MAX5481,数据手册自然看对应的部分,这个不至于错哈 |
| 数据手册写着MAX5481-MAX5484 你要搞清楚是什么型号。 |
| 不太懂,看看有没有高手知道这问题。 |
大漠落日 发表于 2023-10-29 11:31 IC是新的,换了几块板都一样,数据写不进去 |
| 不会是IC有问题吧 |
|
1、我觉得时钟没对准,可能还是第一个节拍问题,建议MAX5481_Write(),for之前先加上 MXA5481_CLK = 0; 2、int转char我这是转的底八位啊,如果是我的应该MAX5481_Write(value>>2//一共十位先发8位 MAX5481_Write((value<<6)&0x00C0)// 再发剩余的两位 3、另外,还建议如果怀疑IC坏了,直接用UP/DOWN模式操作一下试试呗。 |