OpenEdv-开源电子网

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

求解MAX5483数字电位器的通许问题

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-10-24
在线时间
8 小时
发表于 2020-3-12 20:34:56 | 显示全部楼层 |阅读模式
1金钱
我的三线SPI代码:void PotenPiomeTer_Init(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;SPI_InitTypeDef   SPI_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1,ENABLE);

  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4;//cs   两个数字电位器,是串联的。
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_7;//mosi slk   
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
  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_8b;
  SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;
  SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;//第一个时钟上升沿采集数据
  SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_8;// (72M/8)=9M
  SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial=7;
  SPI_Init(SPI1,&SPI_InitStructure);  SPI_Cmd(SPI1,ENABLE);
  MAX5483_CS1_HIGH;    //拉高片选不选择
  MAX5484_CS2_HIGH;
}
void SPI1_WriteByte(u8 Txdata)
{
   u8 ret = 0;
  while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == RESET)
  {
    ret++;
    if(ret > 200)return;
  }
  SPI_I2S_SendData(SPI1,Txdata);
}

void Control_Resistance(u8 cs,u8 Com,u8 Retdata,u8 retData)
{
  if((Retdata > 0x00 && Retdata < 0xff)||(retData > 0 && retData < 0x03))//判断数据正确在写
  {
    if(cs == 1)
    {
      MAX5483_CS1_LOW;
      SPI1_WriteByte(Com);
      SPI1_WriteByte(Retdata);
      SPI1_WriteByte(retData);
      MAX5483_CS1_HIGH;
    }
    else if(cs == 2)
    {
      MAX5484_CS2_LOW;
      SPI1_WriteByte(Com);
      SPI1_WriteByte(Retdata);
      SPI1_WriteByte(retData);
      MAX5484_CS2_HIGH;
    }
   }
  else LED2_ON;
}

int main()
{    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    Delay_Init(72);    Led_Init();//LED没问题的    Key_Init();//按键外部中断也问题的    PotenPiomeTer_Init();    while(1)    {     
         keyflag = Key_Scan();
        switch(keyflag)
       {
             case 1:value1=value1+destiny;
                      if(value1 == 0xff ){
                          value1 = 0xff;//1111 1111
                          value2 = value2 + destiny;
                          if(value2 == 0x03){//0000 0011
                          FLAG = 1;
                          }
                       }
                      Control_Resistance(1,WRITE,value1,value2);
                      Control_Resistance(2,WRITE,value1,value2);
             break;
            case 2:value1=value1-destiny;
                     if(value1 == 0x00 ){
                           value1 = 0xff;
                           value2 = value2 - destiny;
                           if(value2 == 0x00){
                                 FLAG = 1;
                            }
                     }
                    Control_Resistance(1,WRITE,value1,value2);
                   Control_Resistance(2,WRITE,value1,value2);
            break;
            default:break;
           }           else LED1_ON;    }}

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

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-10-24
在线时间
8 小时
 楼主| 发表于 2020-3-12 20:36:28 | 显示全部楼层
求大佬指教,第一次用这个MAX5483,发送命令后控制不了电阻。
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-10-24
在线时间
8 小时
 楼主| 发表于 2020-3-12 20:37:10 | 显示全部楼层
标题打错了,是通讯,不是通许。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 10:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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