查看: 12088|回复: 8

[原创] 【我要创作】LPC824 Lite之GPIO,TTP229BSF电容触摸

[复制链接]
  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 2949 天

    连续签到: 40 天

    [LV.Master]伴坛终老

    23

    主题

    4164

    帖子

    82

    金牌会员

    Rank: 6Rank: 6

    积分
    13890
    最后登录
    2025-8-14
    发表于 2017-3-12 23:07:04 | 显示全部楼层 |阅读模式
    本帖最后由 toofree 于 2017-3-12 23:10 编辑

            【我要创作】LPC824 Lite之GPIO,TTP229BSF电容触摸。

            本来是要对比I2C接口中的两款电容触摸芯片TTP229和MPR121,但是最后发现板上的TTP229不支持I2C接口。板上的型号为TTP229BSF,只支持串行模式TT。
             SNAG-0014.jpg
            粉色框圈出的部分为“0”才是I2C接口,为“1”是串行接口TT。

            由于不是I2C接口,本实验没有增加过多的文件,只增加了软件延时函数文件,“delay.c”、“delay.h”。关于TTP229BSF操作函数在主函数中。
           傲游截图20170312222015.jpg

            实验硬件及连线。连接简单,3.3V电源、地、数据和时钟信号,分别挂到了I2C的数据和时钟管脚。
             IMG_20170205_143059.jpg

            启动时还有三根跳线短接线,需要设置工作模式。在上电后就可以拔掉。关于三根跳线接法用途在后面介绍。
             IMG_20170205_143129.jpg

             整体工程结构预览。
             SNAG-0010.jpg

            在主程序中增加两个函数。I2C_GPIO_Config()初始化IO方向状态,KeyScanValueEx()串行读取按键状态数据。
    1. #ifndef HIGH
    2.         #define HIGH                  1
    3. #endif

    4. #ifndef LOW
    5.         #define LOW                 0
    6. #endif

    7. #ifndef INPUT
    8.         #define INPUT  0
    9. #endif

    10. #ifndef OUTPUT
    11.         #define OUTPUT 1
    12. #endif

    13. #define                SCL_PIN                10
    14. #define                SDA_PIN                11

    15. #define                IOCON_SCL        IOCON_PIO10
    16. #define                IOCON_SDA        IOCON_PIO11

    17. #define SCL_H         Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, SCL_PIN, HIGH)  //
    18. #define SCL_L         Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, SCL_PIN, LOW)  //
    19.    
    20. #define SDA_H         Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, SDA_PIN, HIGH)  //
    21. #define SDA_L         Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, SDA_PIN, LOW)  //

    22. #define SCL_read      Chip_GPIO_PinGetState(LPC_GPIO_PORT, 0, SCL_PIN)
    23. #define SDA_read      Chip_GPIO_PinGetState(LPC_GPIO_PORT, 0, SDA_PIN)

    24. /*****************************************************************************
    25. * Private functions
    26. ****************************************************************************/

    27. /*****************************************************************************
    28. * Public functions
    29. ****************************************************************************/

    30. void I2C_GPIO_Config(void)
    31. {
    32.        
    33.         /* Enable the clock to the Switch Matrix */
    34.         Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_SWM);
    35.        
    36.         Chip_SWM_DisableFixedPin(SWM_FIXED_I2C0_SDA);
    37.         Chip_SWM_DisableFixedPin(SWM_FIXED_I2C0_SCL);
    38.        
    39.         /* Disable the clock to the Switch Matrix to save power */
    40.         Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_SWM);
    41.        
    42.         Chip_GPIO_Init(LPC_GPIO_PORT);
    43.        
    44.         Chip_IOCON_PinSetOpenDrainMode(LPC_IOCON, IOCON_SCL, true);
    45.         Chip_IOCON_PinSetOpenDrainMode(LPC_IOCON, IOCON_SDA, true);
    46.        
    47.         SCL_H;
    48.         SDA_H;
    49.        
    50.         Chip_GPIO_PinSetDIR(LPC_GPIO_PORT, 0, SCL_PIN, OUTPUT);
    51.         Chip_GPIO_PinSetDIR(LPC_GPIO_PORT, 0, SDA_PIN, INPUT);
    52.        
    53. }

    54. // 扫描键值
    55. uint16_t KeyScanValueEx(void)
    56. {
    57.         uint8_t i, j;
    58.         uint16_t keyData = 0x00; // = PIND;
    59.         //
    60.         SDA_H;

    61.         // 有键按下,取键值
    62.         for ( i = 0; i < 16; i++ )
    63.         {
    64.                 SCL_L;
    65.                 delay_us(10);  // 10us
    66.                 // 取数据
    67.                 if ( SDA_read )
    68.                 {
    69.                         keyData += 0<<i;
    70.                         // break;
    71.                 }
    72.                 else
    73.                 {
    74.                         keyData += 1<<i;
    75.                 }
    76.                 SCL_H;
    77.                 delay_us(10);  // 10us
    78.         }
    79.         SCL_H;

    80.         return keyData;
    81. }
    复制代码


            附上一张TTP229B模块原理图。(原理图文件附上, TTP229B sch.rar (86.04 KB, 下载次数: 64)
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-2 08:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    103

    主题

    868

    帖子

    7

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4342
    最后登录
    2025-8-8
    发表于 2017-3-13 12:56:25 | 显示全部楼层
    好贴,建议版主挪到“ARM Cortex-M系列产品” 板块,好贴莫沉了
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-1-18 20:00
  • 签到天数: 45 天

    连续签到: 1 天

    [LV.5]常住居民I

    17

    主题

    262

    帖子

    0

    高级会员

    Rank: 4

    积分
    533
    最后登录
    2024-11-23
    发表于 2017-3-13 10:40:43 | 显示全部楼层
    赞一个         
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-5-24 10:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    140

    主题

    2087

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3913
    最后登录
    2020-5-24
    发表于 2017-3-13 20:46:02 | 显示全部楼层
    加个GSM,可以打电话
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 2949 天

    连续签到: 40 天

    [LV.Master]伴坛终老

    23

    主题

    4164

    帖子

    82

    金牌会员

    Rank: 6Rank: 6

    积分
    13890
    最后登录
    2025-8-14
     楼主| 发表于 2017-3-13 22:55:12 | 显示全部楼层
    suoma 发表于 2017-3-13 20:46
    加个GSM,可以打电话

    多谢捧场
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2019-3-19 09:03
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    0

    主题

    9

    帖子

    0

    注册会员

    Rank: 2

    积分
    56
    最后登录
    2019-3-19
    发表于 2018-4-28 09:18:54 | 显示全部楼层
    多谢捧场
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    6

    主题

    36

    帖子

    0

    注册会员

    Rank: 2

    积分
    192
    最后登录
    2018-5-7
    发表于 2018-5-7 08:27:02 | 显示全部楼层
    赞哦,楼主,代码收下了~~谢谢了~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    4
    最后登录
    2018-5-25
    发表于 2018-5-25 14:02:13 | 显示全部楼层
    好东西谢谢分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2025-5-29 09:38
  • 签到天数: 632 天

    连续签到: 1 天

    [LV.9]以坛为家II

    94

    主题

    1639

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4470

    热心会员

    最后登录
    2025-6-10
    发表于 2018-9-4 08:35:59 | 显示全部楼层
    谢谢楼主分享~~
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-14 04:29 , Processed in 0.117826 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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