OpenEdv-开源电子网

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

触摸驱动模拟SPI改为硬件SPI一处程序修改问题

[复制链接]

4

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2014-9-12
在线时间
3 小时
发表于 2015-1-17 18:00:05 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]//SPI?????? //?ò??????IC????1byte???? //num:???????????? void TP_Write_Byte(u8 num) { u8 count=0; for(count=0;count<8;count++) { if(num&0x80)TDIN=1; else TDIN=0; num<<=1; TCLK=0; TCLK=1; //?????????§ } } //SPI?????? //????????IC????adc?? //CMD:???? //·?????:?????????? u16 TP_Read_AD(u8 CMD) { u8 count=0; u16 Num=0; TCLK=0; //???????±?? TDIN=0; //?????????? TCS=0; //??????????IC TP_Write_Byte(CMD);//·????ü??×? delay_us(6);//ADS7846??×????±??×??¤??6us TCLK=0; delay_us(1); TCLK=1; //??1???±????????BUSY TCLK=0; for(count=0;count<16;count++)//????16??????,??????12?????§ { Num<<=1; TCLK=0; //?????????§ TCLK=1; if(DOUT)Num++; } Num>>=4; //??????12?????§. TCS=1; //??·????? return(Num); } 这是原子哥的软件模拟部分程序 [/mw_shl_code]
我修改如下
[mw_shl_code=c,true]u16 TP_Read_AD(u8 CMD) { u8 NumH, NumL = 0; u16 Num = 0; TCS = 0; //??????????IC NumH = SPI1_ReadWriteByte(CMD); NumL = SPI1_ReadWriteByte(CMD); TCS = 1; //??·????? Num = (NumH + NumL) >> 4; //??????12?????§. return (Num); }[/mw_shl_code] [mw_shl_code=c,true]我看模拟的时序好像是写进一个8bit的CMD,得到一个16bit的数据,然后取低12位。[/mw_shl_code] [mw_shl_code=c,true]硬件如何做到呢...[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

发8位CMD无压力. 收16位数据,分2次,然后截取需要的部分即可. 话说触摸屏真没必要用硬件SPI.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-17 18:00:06 | 显示全部楼层
发8位CMD无压力.
收16位数据,分2次,然后截取需要的部分即可.
话说触摸屏真没必要用硬件SPI.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2014-9-12
在线时间
3 小时
 楼主| 发表于 2015-1-18 10:50:03 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
u16 TP_Read_AD(u8 CMD)   
{     
u16 Num = 0;
TCS = 0;  //??????????IC
SPI1_ReadWriteByte(CMD);
Num = SPI1_ReadWriteByte(0);
Num <<= 8;
Num |= SPI1_ReadWriteByte(0);
Num >>= 3;
TCS = 1; //??·?????      
return (Num);   
}

我如此测试还是不行,主要是目前我的触摸和FLASH公用一个SPI,触摸不该为FLASH的话,那就只有将FLASH改为模拟SPI接口了。
我用SD卡存储字体,刷屏时太慢了,准备放在FLASH里试试,看是不是快些 ~~
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-18 23:29:34 | 显示全部楼层
回复【3楼】gentleye:
---------------------------------
去掉flash试试吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 21:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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