修改 SPI 读程序static __inline unsigned int read_data_cmdunsigned char sbufunsigned int len int ij; memsetsbuf0len; SET_LSCE_LOW; SET_LSRS_LOW; lcm_utilset_gpio_dirLSDA_GPIO_PIN0; lcm_utilset_gpio_pu
以下是修改后的程序:
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);
}
修改内容:
-
在读取数据前,设置 LSCK 和 LSDA 引脚为输出模式,以便控制输出数据。
-
在设置引脚模式时,将 LSCK 和 LSDA 引脚设置为 GPIO_MODE_00 模式,以便控制引脚输出的电平。
-
在读取数据后,将 LSCK 和 LSDA 引脚设置为输入模式,以便读取下一组数据。
-
设置 LSDA 引脚为输出模式,并将其输出高电平,以便在下一次读取数据前,给从设备发送停止信号。
-
修改 GPIO 引脚的输出强度,以确保信号的稳定性
原文地址: http://www.cveoy.top/t/topic/eDy0 著作权归作者所有。请勿转载和采集!