登录
注册
一键加入QQ群
友善之臂官方网站
首 页
联系我们
淘宝店铺
维基教程
资料下载
搜索帖子!
NanoPC-T2
Core4418
NanoPC-T3 Plus
Core6818
NanoPi-M4B
NanoPC-T4
NanoPC-T6
NanoPi-NEO
NanoPi-NEO Core
NanoPi-NEO Air
NanoPi-M1 Plus
NanoPi-Duo2
NanoPi-NEO3
核心板:
Smart210
Tiny210
Smart4418
Smart6818
SOM-RK3399V2
CM3588(新品)
路由器:
R1
R1S
R2S
R2S Plus
R2C Plus
R4S
R5S
R5C
R6C
R6S
热门版块:
Linux技术交流区
友善之臂最新动态
开发板实战手册及教程
站点服务
站务管理与公告
裸机程序和微型OS
默认风格
用户中心首页
编辑个人资料
查看个人资料
好友列表
用户权限查看
积分管理
积分转换
特殊组购买
收藏夹
我的主题
基本统计信息
到访IP统计
管理团队
管理统计
在线统计
会员排行
版块排行
帖子排行
个人首页
我的收藏
好友近况
友善之家
U-boot技术交流区
6410一线触摸和一线背光控制裸机源代码
友友粉丝快线
开发板销售中心
嵌入式最新资讯
友善之臂最新动态
友善之臂官方客服中心
开发板实战手册及教程
应用方案和定制开发
NanoPi 交流与讨论
NanoPi 玩家交流区
ROM发布区
硬软DIY及开发
嵌入式交流与讨论
Android技术交流区
Linux技术交流区
U-boot技术交流区
WinCE技术交流区
Ubuntu技术交流区
裸机程序和微型OS
OpenWRT讨论区
开发板硬件讨论区
相关资料下载及使用技巧
站点服务
二手交易区
我的论坛我的贴
站务管理与公告
上一主题
下一主题
«
1
2
»
Pages: 1/2 Go
新 帖
主题 : 6410一线触摸和一线背光控制裸机源代码
复制链接
|
浏览器收藏
|
打印
carlin
菜鸟在路上
级别: 圣骑士
作者资料
发送短消息
加为好友
UID:
42749
精华:
6
发帖:
241
金钱:
1530 两
威望:
306 点
贡献值:
6 点
综合积分:
602 分
注册时间:
2011-04-11
最后登录:
2016-07-19
楼主
发表于: 2011-06-16 16:57
只看楼主
|
小
中
大
6410一线触摸和一线背光控制裸机源代码
管理提醒:
本帖被 xoom 执行加亮操作(2011-06-17)
复制代码
#include "one_write.h"
#include "s3c6410_addr.h"
#include "soc_cfg.h"
#include "utils.h"
#if 1
//#define TINT_CSTAT_REG __REG(0x7F006044)
//#define rGPFCON GPFCON_REG
//#define rGPFDAT GPFDAT_REG
//#define rTCNTB3 TCNTB3_REG
//#define rTINT_CSTAT TINT_CSTAT_REG
//#define rTCON TCON_REG
#define TINT_CSTAT_INTMASK(n) ( (n&0x1FU))
#define TIMER3_PENDING_CLEAR (1U<<8)
#define TIMER3_INTERRUPT_ENABLE (1<<3)
#define SYS_TIMER_PRESCALER 2
#define SYS_TIMER_DIVIDER 1
//#define S3C6410_PCLK (get_PCLK())
#define SAMPLE_BPS 9600
#define REQ_INFO 0x60U
//extern ulong get_PCLK (void);
#endif
static void set_pin_as_input(void)
{
unsigned tmp;
tmp = rGPFCON;
tmp &= ~(3U << 30);
rGPFCON = tmp;
}
static void set_pin_as_output(void)
{
unsigned tmp;
tmp = rGPFCON;
tmp = (tmp & ~(3U << 30)) | (1U << 30);
rGPFCON = tmp;
}
static void set_pin_value(int v)
{
unsigned tmp;
tmp = rGPFDAT;
if (v) {
tmp |= (1 << 15);
} else {
tmp &= ~(1 << 15);
}
rGPFDAT = tmp;
}
static int get_pin_value(void)
{
int v;
unsigned long tmp;
tmp = rGPFDAT;
v = !!(tmp & (1 << 15));
return v;
}
static void InitTimer(void)
{
rTCNTB3 = (S3C6410_PCLK / SYS_TIMER_PRESCALER / SYS_TIMER_DIVIDER / SAMPLE_BPS - 1);
rTINT_CSTAT = TINT_CSTAT_INTMASK(rTINT_CSTAT) | TIMER3_PENDING_CLEAR;
rTINT_CSTAT = TINT_CSTAT_INTMASK(rTINT_CSTAT) | TIMER3_INTERRUPT_ENABLE;
}
static void StartTimer(void)
{
rTCON &= ~(0xf << 16); // Timer3 Stop
rTCON |= (1 << 17); // update TCNTB3
rTCON &= ~(1 << 17);
rTCON |= ((1 << 19) | (1 << 16)); // AutoReload mode, Timer3 Start
}
static void StopTimer(void)
{
unsigned tcon;
tcon = rTCON;
tcon &= ~(1 << 16);
rTCON = tcon;
}
static void WaitTimerTick(void)
{
while ((rTINT_CSTAT & (1U << 8)) == 0) ;
rTINT_CSTAT = TINT_CSTAT_INTMASK(rTINT_CSTAT) | TIMER3_PENDING_CLEAR;
}
static unsigned char crc8(unsigned v, unsigned len);
static int OneWireSession(unsigned char req, unsigned char res[])
{
unsigned Req;
unsigned *Res;
unsigned int i;
Req = (req << 24) | (crc8(req << 24, 8) << 16);
Res = (unsigned *)res;
set_pin_value(1);
set_pin_as_output();
StartTimer();
for (i = 0; i < 60; i++) {
WaitTimerTick();
}
set_pin_value(0);
for (i = 0; i < 2; i++) {
WaitTimerTick();
}
for (i = 0; i < 16; i++) {
int v = !!(Req & (1U << 31));
Req <<= 1;
set_pin_value(v);
WaitTimerTick();
}
WaitTimerTick();
set_pin_as_input();
WaitTimerTick();
for (i = 0; i < 32; i++) {
(*Res) <<= 1;
(*Res) |= get_pin_value();
WaitTimerTick();
}
StopTimer();
set_pin_value(1);
set_pin_as_output();
return crc8(*Res, 24) == res[0];
}
static int TryOneWireSession(unsigned char req, unsigned char res[])
{
int i;
for (i = 0; i < 3; i++) {
if (OneWireSession(req, res)) {
return 1;
}
}
return 0;
}
void InitOneWire(void)
{
InitTimer();
}
int GetInfo(unsigned char *Lcd, unsigned short *FirmwareVer)
{
unsigned char res[4];
if (!TryOneWireSession(REQ_INFO, res)) {
return 0;
}
*Lcd = res[3];
*FirmwareVer = res[2] * 100 + res[1];
return 1;
}
int SetBacklightOfLCD(unsigned Brightness)
{
unsigned char res[4];
int ret;
if (Brightness > 127) {
Brightness = 127;
}
ret = TryOneWireSession(Brightness | 0x80U, res);
return ret;
}
static unsigned char crc8(unsigned v, unsigned len)
{
unsigned char crc = 0xACU;
while (len--) {
if ((crc & 0x80U) != 0) {
crc <<= 1;
crc ^= 0x7U;
} else {
crc <<= 1;
}
if ((v & (1U << 31)) != 0) {
crc ^= 0x7U;
}
v <<= 1;
}
return crc;
}
void ARM1Wire_SET_Backlight(unsigned Brightness)
{
//InitOneWire();
SetBacklightOfLCD(Brightness);
}
#define level ((3770-317)/(480))
#define vertical ((3839-192)/(272))
int ARM1Wire_GET_XY(void)
{
int ret;
unsigned char res[4];
unsigned short x,y,x1,y1;
unsigned char pressed;
unsigned int ts_status;
ret = TryOneWireSession(0x40U, res);
y = ((res[3] >> 4U) << 8U) + res[2];
x = ((res[3] & 0xFU) << 8U) + res[1];
pressed = (x != 0xFFFU) && (y != 0xFFFU);
x1= ((x-200)*480/(3880-200));
y1= ((3772-y)*272/(3772-324));
//ts_status=((x1 << 16) | (y1)) | (pressed << 31);
Uart_Printf("ADx: %04d , ADy: %04d ,pressed: %04d\n",x1,y1,pressed);
return ret;
}
从UBOOT中搬过来的,在裸机程序里可以直接用,可以控制背光,获取触摸屏的X,Y值。
顶端
回复
引用
分享
yjc99
级别: 新手上路
作者资料
发送短消息
加为好友
QQ联系
UID:
78
精华:
0
发帖:
15
金钱:
90 两
威望:
15 点
贡献值:
0 点
综合积分:
30 分
注册时间:
2008-02-09
最后登录:
2011-10-10
1楼
发表于: 2011-06-16 17:04
只看该作者
|
小
中
大
顶一下,加油
顶端
回复
引用
分享
vvai1
级别: 新手上路
作者资料
发送短消息
加为好友
UID:
47214
精华:
0
发帖:
7
金钱:
35 两
威望:
7 点
贡献值:
0 点
综合积分:
14 分
注册时间:
2011-05-20
最后登录:
2011-07-21
2楼
发表于: 2011-06-16 17:05
只看该作者
|
小
中
大
回 1楼(yjc99) 的帖子
ding ge
顶端
回复
引用
分享
farce
不懂就问,懂就答,都不懂,问神!
级别: 侠客
作者资料
发送短消息
加为好友
UID:
30116
精华:
0
发帖:
105
金钱:
525 两
威望:
105 点
贡献值:
1 点
综合积分:
210 分
注册时间:
2010-10-12
最后登录:
2020-03-10
3楼
发表于: 2011-06-16 17:12
只看该作者
|
小
中
大
收藏一下,
顶端
回复
引用
分享
carlin
菜鸟在路上
级别: 圣骑士
作者资料
发送短消息
加为好友
UID:
42749
精华:
6
发帖:
241
金钱:
1530 两
威望:
306 点
贡献值:
6 点
综合积分:
602 分
注册时间:
2011-04-11
最后登录:
2016-07-19
4楼
发表于: 2011-06-16 17:18
只看该作者
|
小
中
大
说明一下
头文件 one_write.h 没有用,可以去掉
其他文件没有请看这个帖子的的源程序,我工程有点大了,传不上去
http://www.aiothome.net/read.php?tid-12820.html
顶端
回复
引用
分享
pcwhy
级别: 骑士
作者资料
发送短消息
加为好友
UID:
14419
精华:
1
发帖:
183
金钱:
995 两
威望:
199 点
贡献值:
1 点
综合积分:
386 分
注册时间:
2010-02-08
最后登录:
2014-04-13
5楼
发表于: 2011-06-19 03:32
只看该作者
|
小
中
大
精彩!谢谢了。
顶端
回复
引用
分享
jnny_cn
我思故我在
级别: 侠客
作者资料
发送短消息
加为好友
UID:
11698
精华:
0
发帖:
61
金钱:
310 两
威望:
62 点
贡献值:
0 点
综合积分:
122 分
注册时间:
2009-12-18
最后登录:
2016-04-09
6楼
发表于: 2011-06-29 09:57
只看该作者
|
小
中
大
精彩!谢谢了。
顶端
回复
引用
分享
lixupeng
级别: 侠客
作者资料
发送短消息
加为好友
UID:
44311
精华:
0
发帖:
138
金钱:
710 两
威望:
142 点
贡献值:
0 点
综合积分:
276 分
注册时间:
2011-04-24
最后登录:
2014-10-14
7楼
发表于: 2011-06-29 12:27
只看该作者
|
小
中
大
学习!
顶端
回复
引用
分享
cqjyq
掌控ARM,前途无疆!
级别: 侠客
作者资料
发送短消息
加为好友
UID:
50307
精华:
0
发帖:
67
金钱:
345 两
威望:
69 点
贡献值:
0 点
综合积分:
134 分
注册时间:
2011-06-21
最后登录:
2012-05-27
8楼
发表于: 2011-07-06 08:18
只看该作者
|
小
中
大
学习下。
顶端
回复
引用
分享
yzw_scu
级别: 新手上路
作者资料
发送短消息
加为好友
UID:
49230
精华:
0
发帖:
40
金钱:
200 两
威望:
40 点
贡献值:
0 点
综合积分:
80 分
注册时间:
2011-06-09
最后登录:
2011-10-26
9楼
发表于: 2011-07-06 20:27
只看该作者
|
小
中
大
rTCNTB3 = (S3C6410_PCLK / SYS_TIMER_PRESCALER / SYS_TIMER_DIVIDER / SAMPLE_BPS - 1); 请楼主讲解哈这条命令呗 没看懂 谢谢
顶端
回复
引用
分享
上一主题
下一主题
«
1
2
»
Pages: 1/2 Go
友善之家
U-boot技术交流区
http://www.aiothome.net
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问