查看: 4107|回复: 14

[原创] LPC824和MicroPython多功能控制器进度一

[复制链接]
  • TA的每日心情
    奋斗
    2023-9-17 19:57
  • 签到天数: 2310 天

    [LV.Master]伴坛终老

    107

    主题

    4270

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    10481
    最后登录
    2023-9-17
    发表于 2017-1-5 01:14:52 | 显示全部楼层 |阅读模式
    最近事情有些多,不过总算抽出时间,将控制器的程序框架部分实现了。

    ESP8266和LPC824之间通过串口通信。因为ESP8266只有一个半串口,串口1连接到repl,不方便直接使用,串口2只有发送没有接收功能,也不方便。所以自己编写了一个软件串口程序,可以指定任意两个GPIO作为串口的TX/RX,实现基本的串口通信功能。考虑到软件串口的稳定性,所以速率不能设置太高,这里设置为1200。

    软件串口驱动 softuart.py
    1. import time
    2. import machine
    3. from machine import Pin

    4. class SOFTUART(object):
    5.     def __init__(self, tx, rx, baud = 1200):
    6.         self.tx = tx
    7.         self.rx = rx
    8.         self.tx.init(Pin.OUT)
    9.         self.rx.init(Pin.IN)
    10.         self.baud(baud)
    11.         self.timeout = False

    12.     def baud(self, baud):
    13.         self.bitdelay = 1000000 // baud - 200

    14.     def dt(self, dt=''):
    15.         if dt=='':
    16.             return self.bitdelay
    17.         else:
    18.             self.bitdelay = dt

    19.     def putc(self, dat):
    20.         self.tx(0)
    21.         time.sleep_us(self.bitdelay)
    22.         for i in range(8):
    23.             self.tx(dat%2)
    24.             dat = dat >> 1
    25.             time.sleep_us(self.bitdelay)
    26.         self.tx(1)
    27.         time.sleep_us(self.bitdelay)

    28.     def puts(self, str, cr=1):
    29.         for i in range(len(str)):
    30.             time.sleep_ms(1)
    31.             self.putc(ord(str[i]))
    32.         if cr > 0:
    33.             time.sleep_ms(1)
    34.             self.putc(0x0D)

    35.     def put(self, buf):
    36.         for i in range(len(buf)):
    37.             time.sleep_ms(1)
    38.             self.putc(buf[i])

    39.     def timeout(self):
    40.         return self.timeout

    41.     def getc(self, timeout=20):
    42.         t = 0
    43.         self.timeout = False
    44.         while self.rx():
    45.             time.sleep_us(20)
    46.             t = t + 1
    47.             if t < timeout*5:
    48.                 pass
    49.             else:
    50.                 self.timeout = True
    51.                 return -1
    52.         time.sleep_us(self.bitdelay + self.bitdelay//8)
    53.         dat = 0
    54.         for i in range(8):
    55.             dat = dat >> 1
    56.             if self.rx():
    57.                 dat = dat | 0x80
    58.             time.sleep_us(self.bitdelay)
    59.         time.sleep_us(self.bitdelay)
    60.         return dat

    61.     def get(self, num=0):
    62.         dat=bytearray(0)
    63.         while True:
    64.             t = self.getc()
    65.             if self.timeout:
    66.                 return dat
    67.             else:
    68.                 dat.append(t)
    69.             if num > 0:
    70.                 if num > 1:
    71.                     num = num - 1
    72.                 else:
    73.                     return dat

    复制代码

    LPC824接收到ESP8266发送的命令后,进行分析,然后根据命令执行相应的动作。暂时只写了GPIO的数字输入输出控制,控制命令为:
    set n  设置GPIOn输出高电平
    clr n  设置GPIOn输出低电平
    in n  读取GPIOn电平
    [n=0-15]

    LPC824的程序有些乱,功能也没有完成,等大部分完成后再整理分享了。

    先演示基本功能,因为没有时间做App,先用webrepl代替,通过wifi发送控制命令

    先通过webrepl连接到ESP8266
    a1.jpg

    这时LED12不亮
    a3.jpg

    发送命令'set 12',LED12点亮。如果发送'clr 12',LED将熄灭
    a2.jpg

    a4.jpg


    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:19
  • 签到天数: 818 天

    [LV.10]以坛为家III

    71

    主题

    2444

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5513
    最后登录
    2024-4-23
    发表于 2017-1-5 01:44:09 | 显示全部楼层
    感谢分享
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    [LV.10]以坛为家III

    66

    主题

    4888

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6152
    最后登录
    2024-4-15
    发表于 2017-1-5 08:27:41 | 显示全部楼层
    多谢分享
    开心
    回复

    使用道具 举报

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

    [LV.Master]伴坛终老

    45

    主题

    5182

    帖子

    22

    金牌会员

    Rank: 6Rank: 6

    积分
    10671
    最后登录
    2024-4-24
    发表于 2017-1-5 09:37:52 | 显示全部楼层
    太赞了,谢谢分享。
    签到签到
    回复 支持 反对

    使用道具 举报

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

    [LV.5]常住居民I

    17

    主题

    262

    帖子

    0

    高级会员

    Rank: 4

    积分
    518
    最后登录
    2019-11-10
    发表于 2017-1-5 09:49:54 | 显示全部楼层
    感谢分享   
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2022-4-4 11:28
  • 签到天数: 351 天

    [LV.8]以坛为家I

    141

    主题

    8054

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5740
    最后登录
    2022-4-4
    发表于 2017-1-5 11:10:47 | 显示全部楼层
    Py固件要下载到824中吗
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-9-17 19:57
  • 签到天数: 2310 天

    [LV.Master]伴坛终老

    107

    主题

    4270

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    10481
    最后登录
    2023-9-17
     楼主| 发表于 2017-1-5 22:24:38 | 显示全部楼层
    wambob 发表于 2017-1-5 11:10
    Py固件要下载到824中吗

    LPC824现在还不能运行micropython,估计是下到ESP8266中。这里是利用LPC824开关矩阵的特性,任意设置GPIO功能
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2022-4-4 11:28
  • 签到天数: 351 天

    [LV.8]以坛为家I

    141

    主题

    8054

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5740
    最后登录
    2022-4-4
    发表于 2017-1-7 21:55:52 | 显示全部楼层
    shaoziyang 发表于 2017-1-5 22:24
    LPC824现在还不能运行micropython,估计是下到ESP8266中。这里是利用LPC824开关矩阵的特性,任意设置GPIO ...

    您好,我下载了micropython ,然后在win下进入目录make时出错,我的电脑是安装了gcc-arm-none-eabi-5_3-151225-win
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35

    主题

    356

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2563
    最后登录
    2023-6-23
    发表于 2017-1-7 22:04:32 | 显示全部楼层
    谁能把Micropython移植到LPC上就牛了,比如LPC54608上面
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-9-17 19:57
  • 签到天数: 2310 天

    [LV.Master]伴坛终老

    107

    主题

    4270

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    10481
    最后登录
    2023-9-17
     楼主| 发表于 2017-1-8 12:20:22 | 显示全部楼层
    wambob 发表于 2017-1-7 21:55
    您好,我下载了micropython ,然后在win下进入目录make时出错,我的电脑是安装了gcc-arm-none-eabi-5_3-1 ...

    编译的那个芯片分支?命令行是怎样的?
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-24 10:37 , Processed in 0.152391 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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