以下是修改后的程序:

static __inline unsigned int read_data_cmd(unsigned char *sbuf,unsigned int len) { int i,j; memset(sbuf,0,len); SET_LSCE_LOW; SET_LSRS_LOW; lcm_util.set_gpio_out_strength(LSCK_GPIO_PIN, GPIO_OUT_STRENGTH_4MA); lcm_util.set_gpio_dir(LSCK_GPIO_PIN, 1); lcm_util.set_gpio_mode(LSCK_GPIO_PIN, GPIO_MODE_00); lcm_util.set_gpio_out_strength(LSDA_GPIO_PIN, GPIO_OUT_STRENGTH_4MA); lcm_util.set_gpio_dir(LSDA_GPIO_PIN, 1); lcm_util.set_gpio_mode(LSDA_GPIO_PIN, GPIO_MODE_00);

for(i=0;i<len;i++)
{
	for(j=0;j<8;j++) // 8 Data
	{		
		SET_LSCK_LOW;
		UDELAY(10);
		SET_LSCK_HIGH;
		sbuf[i]<<= 1;
		sbuf[i] |= GET_GPIO_VALUE(LSDA_GPIO_PIN);	 
		UDELAY(10); 
	}
}

SET_LSDA_OUT;
SET_LSDA_HIGH; 
SET_LSCE_HIGH;
SET_LSRS_HIGH;

lcm_util.set_gpio_dir(LSCK_GPIO_PIN, 0);
lcm_util.set_gpio_dir(LSDA_GPIO_PIN, 0);

}

修改内容:

  1. 在读取数据前,设置 LSCK 和 LSDA 引脚为输出模式,以便控制输出数据。

  2. 在设置引脚模式时,将 LSCK 和 LSDA 引脚设置为 GPIO_MODE_00 模式,以便控制引脚输出的电平。

  3. 在读取数据后,将 LSCK 和 LSDA 引脚设置为输入模式,以便读取下一组数据。

  4. 设置 LSDA 引脚为输出模式,并将其输出高电平,以便在下一次读取数据前,给从设备发送停止信号。

  5. 修改 GPIO 引脚的输出强度,以确保信号的稳定性


原文地址: http://www.cveoy.top/t/topic/eDy0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录