CH451s stm32

请问有没有stm32 的CH451的例程;我将clk din load 配置成推挽输出,dout配置成上拉输入;其余原版照样移植,按下按键 并不能触发dout;不知道是哪里出现了问题。

 

 

 

void CH451_Init()
  {
   GPIO_InitTypeDef GPIO_InitStructure; //GPIO


 RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOA,ENABLE);
 GPIO_InitStructure.GPIO_Pin =GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12;       
 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
 
 
 
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);  
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN ;  //上拉输入
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
 
   DIN0; //先低后高,输出上升沿通知CH451选择4线串行接口

    DIN1;
 //   DCLK1; //置为默认的高电平
//    LOAD1;
  //  DOUT1;  //置为输入
  }

void CH451_Write(uint dat,uint length)
    {
       uint i;
     
       LOAD0;             //串行数据加载端置1
       for(;length>0;length--)
         {          
           
            if((dat&0x01)==0x01)   //判断dat最低位是否为1
                  DIN1;  // dat最低位为1的话就向din(串行数据输入)写1
            else  DIN0;  // dat最低位为0的话就向din(串行数据输入)写0
       DCLK0;       //串行数据时钟线 置0
       dat=dat>>1;   //dat向右移动一位
            DCLK1;       //串行数据时钟线 置1
     
          
         }
       LOAD1;
    }

初始化时,建议示波器抓取CK,LOAD,DIN信号波形,断开Dout,按键测试该引脚是否产生中断


您好;我仿真走单步每一位数据发送都是正确的;硬件连接也没问题;采用的是3.3v供电;现发送0x413观察CLK0;也没变化


    DIN1;DIN0; DIN1;中间加延时。 CH451_Write时钟发送加延时。


 


只有登录才能回复,可以选择微信账号登录