蓝牙无线传数据?Quecpython 平台 SPP 模式玩法大揭秘!

嘿,各位蓝牙玩家、开发大神们~ 今天来聊个超实用的技能:在 Quecpython 平台上用 SPP 模式玩转蓝牙!不管你是想做无线串口通信,还是搞设备间数据互传,这篇指南都能让你秒变 “蓝牙达人”,小白也能轻松上手~

先搞懂:蓝牙 SPP 到底是个啥?

其实呀,SPP(Serial Port Profile,串口协议)就是经典蓝牙(Bluetooth BR/EDR)里的 “无线串口”!它能让两个设备像接了根无形的数据线一样,通过蓝牙模拟传统的 RS232 串口通信。简单说:有线串口能做的,它用蓝牙无线也能做,是不是很神奇?

SPP 能玩出哪些花样?

这可太多了!日常开发和生活中到处都能见到它的身影:

👉 蓝牙串口模块:比如咱们熟悉的 HC-05、HC-06、JDY-08,插上单片机就能用 SPP 无线传数据,告别杂乱的电线~
 👉 车载诊断:汽车 OBD2 读码器就是靠 SPP 和手机连接,实时读取车速、油耗这些数据,修车师傅的好帮手!
 👉 蓝牙打印机:超市小票、快递标签打印机,用 SPP 无线接收打印指令,摆在哪里都方便~
 👉 工业设备:工厂里的 PLC、单片机,不用布线就能通过 SPP 传数据,维护起来超省心!
 👉 日常小场景:比如蓝牙耳机(音频数据传输)、设备间传图片 / 文件,甚至自定义设备界面的 logo,都能靠它实现~

而且哦,SPP 支持最高 3M 速率传输,速度杠杠的!

哪些模组能玩 SPP?

Quecpython 平台下,这些 4G 模组都支持蓝牙 SPP,手里有的小伙伴可以直接开工:
 EC200U、EC600U、EG912U、EG915ULA_AB、EG915UEU_AB
 (没有的也别慌,先马住攻略,以后说不定就用上啦~)

划重点:Quecpython 开发 SPP 有多简单?

最爽的是,在 Quecpython 平台上玩蓝牙 SPP,根本不用啃复杂的底层协议栈!就像搭积木一样,调用几个简单的接口,分分钟搞定连接、传数据~ 是不是超省心?

手把手教你:蓝牙 SPP 初始化 + 通信全流程

下面咱们一步步来,从初始化到收发数据,跟着做就能搞定~

第一步:准备工作 —— 初始化蓝牙

首先得让蓝牙 “醒过来”,还得给它配个 “消息通知员”(回调函数),蓝牙有啥动静(比如连上了、收到数据了)都会通过它告诉你~

核心接口:bt.init(user_cb)

● 作用:初始化蓝牙,注册回调函数

● 回调函数(user_cb):蓝牙事件的 “消息中心”,比如 “蓝牙启动了”“收到数据了” 都会在这里通知你~

第二步:认识蓝牙的 “小动作”——

 事件 ID

蓝牙工作时会有各种 “状态通知”,咱们得知道这些通知代表啥,比如:

● BT_START_STATUS_IND(0):蓝牙启动了

● BT_SPP_CONNECT_IND(61):SPP 连接成功啦

● BT_SPP_RECV_DATA_IND(14):收到数据啦

● BT_SPP_DISCONNECT_IND(62):连接断开了

这些就像蓝牙的 “表情”,看懂了就能知道它在干嘛~

第三步:代码示例 —— 从启动到传数据全流程

咱们直接上代码,每一步都给你标清楚,小白也能看懂~

# 导入蓝牙模块,用于蓝牙相关操作
import bt
# 导入时间模块,用于延时等时间操作
import utime
# 导入多线程模块,用于创建事件处理线程
import _thread
# 从队列模块导入Queue,用于存储蓝牙事件消息
from queue import Queue
# 定义蓝牙设备名称,其他设备可通过该名称搜索到本设备
BT_NAME = 'QuecPython-SPP'
# 定义蓝牙事件字典,键为事件描述,值为事件ID,用于识别不同蓝牙事件
BT_EVENT = {
    'BT_START_STATUS_IND': 0,         # 蓝牙/ble启动状态通知
    'BT_STOP_STATUS_IND': 1,          # 蓝牙/ble停止状态通知
    'BT_SPP_INQUIRY_IND': 6,          # 蓝牙SPP查询到设备通知
    'BT_SPP_INQUIRY_END_IND': 7,      # 蓝牙SPP查询结束通知
    'BT_SPP_RECV_DATA_IND': 14,       # 蓝牙SPP接收数据通知
    'BT_SPP_CONNECT_IND': 61,         # 蓝牙SPP连接状态通知
    'BT_SPP_DISCONNECT_IND': 62,      # 蓝牙SPP断开连接通知
}
# 目标设备信息字典,存储要连接的设备名称和蓝牙地址
DST_DEVICE_INFO = {
    'dev_name':'iQOO Neo7 SE',# 要连接的目标设备蓝牙名称
    'bt_addr': None  # 目标设备蓝牙地址,初始为None,搜索到后赋值
}
# 蓝牙运行状态标记:0-未运行,1-运行中
BT_IS_RUN = 0
# 创建消息队列,最大容量30,用于缓存蓝牙回调函数传来的事件消息
msg_queue = Queue(30)
# 蓝牙回调函数:当蓝牙有事件发生时,系统会调用该函数
# 参数args:事件相关参数,包含事件ID、状态等信息
def bt_callback(args):
    global msg_queue
    # 将事件参数放入消息队列,供事件处理线程处理
    msg_queue.put(args)
# 打开/usr/test.txt文件,模式为a+(追加+可读),用于存储接收的蓝牙数据
f=open('usr/test.txt','a+')
# 蓝牙事件处理线程函数:循环从消息队列获取事件并处理
def bt_event_proc_task():
    # 声明使用全局变量
    global msg_queue
    global BT_IS_RUN
    global DST_DEVICE_INFO
    while True:
        print('wait msg...')
        # 从消息队列获取消息,若无消息则阻塞等待
        msg = msg_queue.get()
        # 解析事件ID(第一个参数为事件ID)
        event_id = msg[0]
        # 解析状态(第二个参数为状态:0-成功,非0-失败)
        status = msg[1]
        # 处理蓝牙启动状态通知事件
        if event_id == BT_EVENT['BT_START_STATUS_IND']:
            print('event: BT_START_STATUS_IND')
            # 若启动成功
            if status == 0:
                print('BT start successfully.')
                # 更新蓝牙运行状态为运行中
                BT_IS_RUN = 1
                print('Set BT name to {}'.format(BT_NAME))
                # 设置蓝牙设备名称
                retval = bt.setLocalName(0, BT_NAME)
                if retval != -1:
                    print('BT name set successfully.')
                else:
                    print('BT name set failed.')
                    # 若设置名称失败,停止蓝牙
                    bt.stop()
                    continue
                # 设置蓝牙可见模式(3表示可见)
                retval = bt.setVisibleMode(3)
                if retval == 0:
                    # 获取当前可见模式并验证
                    mode = bt.getVisibleMode()
                    if mode == 3:
                        print('BT visible mode set successfully.')
                    else:
                        print('BT visible mode set failed.')
                        bt.stop()
                        continue
                else:
                    print('BT visible mode set failed.')
                    bt.stop()
                    continue
                # 以下为查询设备相关代码(默认注释,取消注释可启用)
                # retval = bt.startInquiry(15)
                # if retval != 0:
                #     print('Inquiry error.')
                #     bt.stop()
                #     continue
            # 若启动失败
            else:
                print('BT start failed.')
                bt.stop()
                continue
        # 处理蓝牙停止状态通知事件
        elif event_id == BT_EVENT['BT_STOP_STATUS_IND']:
            print('event: BT_STOP_STATUS_IND')
            if status == 0:
                # 更新蓝牙运行状态为未运行
                BT_IS_RUN = 0
                print('BT stop successfully.')
            else:
                print('BT stop failed.')
            # 以下为释放SPP和蓝牙资源的代码(默认注释)
            # retval = bt.sppRelease()
            # if retval == 0:
            #     print('SPP release successfully.')
            # else:
            #     print('SPP release failed.')
            # retval = bt.release()
            # if retval == 0:
            #     print('BT release successfully.')
            # else:
            #     print('BT release failed.')
            # break
            # 延时5秒后重新启动蓝牙
            utime.sleep(5)
            bt.start()
            bt.setVisibleMode(3)
        # 处理SPP查询到设备通知事件
        elif event_id == BT_EVENT['BT_SPP_INQUIRY_IND']:
            print('event: BT_SPP_INQUIRY_IND')
            if status == 0:
                # 解析信号强度(第三个参数为rssi)
                rssi = msg[2]
                # 解析设备名称(第五个参数为设备名称)
                name = msg[4]
                # 解析设备地址(第六个参数为设备地址)
                addr = msg[5]
                # 格式化MAC地址(转换为xx:xx:xx:xx:xx:xx格式)
                mac = '{:02x}:{:02x}:{:02x}:{:02x}:{:02x}:{:02x}'.format(addr[5], addr[4], addr[3], addr[2], addr[1], addr[0])
                print('name: {}, addr: {}, rssi: {}'.format(name, mac, rssi))
                # 若查询到目标设备
                if name == DST_DEVICE_INFO['dev_name']:
                    print('The target device is found, device name {}'.format(name))
                    # 记录目标设备地址
                    DST_DEVICE_INFO['bt_addr'] = addr
                    # 取消查询(已找到目标设备)
                    retval = bt.cancelInquiry()
                    if retval != 0:
                        print('cancel inquiry failed.')
                        continue
            else:
                print('BT inquiry failed.')
                bt.stop()
                continue
        # 处理SPP接收数据通知事件
        elif event_id == BT_EVENT['BT_SPP_RECV_DATA_IND']:
            # print('event: BT_SPP_RECV_DATA_IND')
            # 若接收数据成功
            if status == 0:
                # 解析接收的数据(第四个参数为数据)
                data = msg[3]
                # 将数据写入文件
                f.write(data)
                print('recvbytes data: {}'.format(data))
                # 以下为发送响应数据的代码(默认注释,取消注释可启用)
                # send_data = 'I have received the data you sent.'
                # print('send data: {}'.format(send_data))
                # retval = bt.sppSend(send_data)
                if retval != 0:
                    print('send data faied.')
            else:
                print('Recv data failed.')
                bt.stop()
                continue
        # 处理SPP连接通知事件
        elif event_id == BT_EVENT['BT_SPP_CONNECT_IND']:
            print('event: BT_SPP_CONNECT_IND')
            # 若连接成功
            if status == 0:
                # 解析连接状态(第三个参数为连接状态)
                conn_sta = msg[2]
                # 解析设备地址(第四个参数为设备地址)
                addr = msg[3]
                # 格式化MAC地址
                mac = '{:02x}:{:02x}:{:02x}:{:02x}:{:02x}:{:02x}'.format(addr[5], addr[4], addr[3], addr[2], addr[1], addr[0])
                print('SPP connect successful, conn_sta = {}, addr {}'.format(conn_sta, mac))
            else:
                print('Connect failed.')
                bt.stop()
                continue
        # 处理SPP断开连接通知事件
        elif event_id == BT_EVENT['BT_SPP_DISCONNECT_IND']:
            print('event: BT_SPP_DISCONNECT_IND')
            # 解析连接状态(第三个参数为连接状态)
            conn_sta = msg[2]
            # 解析设备地址(第四个参数为设备地址)
            addr = msg[3]
            # 格式化MAC地址
            mac = '{:02x}:{:02x}:{:02x}:{:02x}:{:02x}:{:02x}'.format(addr[5], addr[4], addr[3], addr[2], addr[1], addr[0])
            print('SPP disconnect successful, conn_sta = {}, addr {}'.format(conn_sta, mac))
            # 关闭文件
            f.close()
            bt.stop()
            continue
# 主函数:初始化并启动蓝牙SPP
def main():
    global BT_IS_RUN
    # 启动蓝牙事件处理线程
    _thread.start_new_thread(bt_event_proc_task, ())
    # 初始化蓝牙(注册回调函数)
    retval = bt.init(bt_callback)
    if retval == 0:
        print('BT init successful.')
    else:
        print('BT init failed.')
        return -1
    # 初始化SPP
    retval = bt.sppInit()
    if retval == 0:
        print('SPP init successful.')
    else:
        print('SPP init failed.')
        return -1
    # 启动蓝牙
    retval = bt.start()
    if retval == 0:
        print('BT start successful.')
    else:
        print('BT start failed.')
        # 若启动失败,释放SPP资源
        retval = bt.sppRelease()
        if retval == 0:
            print('SPP release successful.')
        else:
            print('SPP release failed.')
        return -1
    # 循环监测蓝牙运行状态
    count = 0
    while True:
        utime.sleep(1)
        count += 1
        # 获取当前时间
        cur_time = utime.localtime()
        # 格式化时间戳(时:分:秒)
        timestamp = "{:02d}:{:02d}:{:02d}".format(cur_time[3], cur_time[4], cur_time[5])
        # 每5秒打印一次运行状态
        if count % 5 == 0:
            if BT_IS_RUN == 1:
                print('[{}] BT SPP is running, count = {}......'.format(timestamp, count))
                print('')
            else:
                print('BT SPP has stopped running, ready to exit.')
                break
# 若脚本作为主程序运行,则执行main函数
if __name__ == '__main__':
main()

第四步:手机配合测试 —— 秒变

 “蓝牙数据中转站”

代码跑起来后,咱们用手机配合测试一下:

1、手机下载 “blue-spp” 软件(专门玩 SPP 的工具)

2、打开手机蓝牙,搜索到咱们设置的蓝牙名(比如 “QuecPython-SPP”)

3、连接成功后,在手机上输入点文字,模组就能收到啦~反过来模组也能发数据给手机

亲测有效,数据嗖嗖传,比插线方便多了!

图片

图片

图片

总结一下:SPP 模式超实用,上手超简单!

今天的蓝牙 SPP 小课堂就到这里~ 简单说:

● SPP 是经典蓝牙的 “无线串口”,能模拟有线通信,传数据超方便

● 支持 EC200U、EC600U 等多款模组,手头有的赶紧试

● Quecpython 平台调用接口就行,不用啃底层,小白也能玩

相关推荐

200 TOPS稀疏算力!移远SP900BF‑AP搭载高通跃龙™ IQ-9075处理器,领跑端侧AI

SP900BF‑AP集成高性能AI加速单元,提供最高200 TOPS端侧稀疏算力,有助于在设备端流畅运行主流大语言模型、视觉语言模型与AI Agent应用,如Qwen、DeepSeek、Gemma、LLaVA等,无需依赖网络端,从而有效降低时延与带宽成本,并保障数据本地化与隐私安全,契合自主移动机器人、工业视觉、边缘AI网关等高实时性业务场景。在智能制造加速演进的当下,端侧AI、本地大模型成为产业升级刚需,但网络时延、带宽成本、数据隐私安全,也成为行业落地需要应对的现实挑战。

13

移远通信携手高通,依托AI Hub共建端侧AI开发者生态

移远通信与高通公司今日共同宣布,将在终端侧AI领域进一步深化合作。®,加速生成式和智能体AI应用在物联网、下一代PC、智能汽车、XR设备等资源受限的终端侧的部署与普及。移远通信首席运营官张栋表示:“高通公司在端侧AI创新与生态建设上长期引领,AI Hub中国版更把优质模型与本地化服务带到开发者面前。我们很高兴与高通携手,用丰富的端侧AI硬件和工具链,把这些能力转化为可量产、可复制的场景方案。

281

具身智能走进工厂:移远宝维塔工博会两大发布,柔性智造与车载电子测试同步提速

10月12日,2026中国国际工业博览会在国家会展中心(上海)开幕。聚焦先进制造与工业自动化,移远通信旗下工业智能品牌于展会现场正式发布,并推出,围绕柔性制造与车载电子测试自动化,分享技术探索、量产实践与行业洞察。

194

移远产品体验官 | 第一期 • 入选结果揭晓

219

移远产品体验官正在招募|免费开发板等你来体验!

16

LVGL-流程

在当今嵌入式系统开发领域,图形化用户界面(GUI)的需求越发突显,Quecpython + LVGL将为您的GUI开发助力。

65

IOTE 2026 | 百搭主控板登场!移远QSM603FCP,打造AIoT终端的高效底座

8月26日,IOTE深圳物联网展拉开帷幕。作为聚焦AIoT、边缘智算与机器人创新应用的产业风向标,本届展会汇聚大量前沿技术成果。在此期间,作为填补中端市场高性能智控需求的关键一环,QSM603FCP凭借,为智慧零售、工业AI质检、边缘智算网关及具身智能机器人等领域提供了“即插即用”的硬核底座。作为主控板的“大脑”,QSM603FCP基于。

452

守护每一程翻山越岭,移远通信为闽西公路织就“数字防护网”

在福建龙岩,G319等国道蜿蜒穿行于闽西的崇山峻岭之间。沿线高边坡、深落差、急弯道此起彼伏,每逢汛期,强降雨频发,极易诱发山体滑坡、塌方等地质灾害,不仅严重威胁车辆和行人通行安全,也为公路养护带来了极大挑战。为补齐山区公路安全管控短板,推动交通基础设施数字化转型升级,龙岩市启动“普通公路示范通道智慧化改造项目”。山区边坡防护最大的难题,就是风险藏在暗处,很难提前预判。山体形变细微无声,传统巡检方式只能事后补救,很难提前捕捉萌芽风险。为此,

170

移远通信×星云环影,解锁儿童“AI智伴”新体验

AI科学分析总结儿童的兴趣及爱好,并提供成长建议与情绪分析。该方案使搭载同一机芯盒的不同毛绒玩具,能够拥有独特的性格与交互逻辑,实现了。

200

移远通信:以软硬一体的AIoT方案,玩转AI智能陪伴新风口

在7月23日举办的AIZQE 2026全球AI硬件与AIoT终端创新千人峰会・深圳站上,移远通信产品总监王鹏系统介绍了公司面向AI智能陪伴领域的一站式行业解决方案,全面拆解移远AIoT软硬一体化能力,并分享了在该赛道深耕多年、落地多元智能终端的实践经验。以“情感陪伴+科学教育”为核心,具备AI学伴团、万物识别、拍照学习等核心功能,支持户外、居家多场景,帮助用户随时随地探索知识,实现寓教于乐的伴随式学习。面向都市年轻上班族及独居人群,可实时捕捉用户情绪变化,输出即时、暖心的互动反馈。移远通信产品总监王鹏。

215

筑牢“安全底线”:移远通信车规IMU模组斩获ISO 26262 ASIL-B认证

在辅助驾驶技术飞速迭代的今天,如果说高精度的卫星定位决定了车辆感知能力的“上限”,那么惯性测量单元(IMU)便是守住车辆行驶安全的“底线”,它就像人的内耳前庭,时刻感知着车辆的姿态、加速度和角速度。即便驶入隧道、地下车库或高楼林立的城市峡谷,卫星信号被遮挡时,这颗深藏于车身内部的“电子内耳”依然能持续输出运动数据,确保定位不中断、决策不失控。2026年7月22日,移远GNSS产品部总监方成(右)&TÜV奥地利集团中国区总裁黄飞。

297

WAIC 2026 | 这套智能双臂组装方案,让“柔性智造”触手可及

从“专机专用”到“通用智能”,宝维塔以精密组装为切入点,将通用具身智能从前沿技术概念,转化为可落地、可规模化复制的智造解决方案。简单来说,这套系统相当于给机器装上一副“仿生人眼”,能完整看清零件的立体外形,精准判断出零件的空间位置、摆放角度和状态,让机械臂精准知道零件在哪里、是什么姿势、该从哪里抓取。,比如“抓取右侧那个透明的圆形接头”,机械臂便能自主理解语义、识别目标、规划路径并避开障碍,一气呵成完成抓取。,无论是螺丝锁付、插拔装配、点胶贴合还是线束组装,都能快速适配,一台设备通吃多种工艺。

207

WAIC 2026 | 移远轮臂式具身机器人平台登场:让机器人“想明白、反应快、拿得稳”

7月19日,上海,2026世界人工智能大会(WAIC)移远展台现场。只需一个简单指令“给我一瓶XX饮料”——机器人识别、抓取、递送,一气呵成。不用重复指令,也不必靠遥控器“手把手”教学。它自己“理解透”你的需求,“看清楚”饮料在哪,“想明白”怎么伸手,“拿捏准”每一丝力道。从语音到动作,从意图到执行,这台机器人完成了一次完整的自主智能闭环。

398

跨越端侧AI落地鸿沟:移远通信大模型方案全面升级,重塑交互与效能

面对端侧AI大模型全面爆发的市场需求,如何帮助客户高效落地并抢占AI先机,已成为行业的核心命题。在WAIC 2026(世界人工智能大会)期间,为行业打通AI商业化落地“最后一公里”提供了全新思路。移远AI前沿技术中心总负责人王韬表示:“当整个行业都在为参数突破而欢呼时,我们选择了一条更务实的路——沉下心来,在端侧大模型领域持续深耕。因为我们深知,技术的终极意义不在于跑分,而在于落地。

196

WAIC 2026 | 移远SleepHub首发:以声学AI重新定义智能电动床交互体验

7月17日,2026世界人工智能大会(WAIC)在上海盛大启幕,。这套方案专门为电动床品牌与制造厂商打造,采用。其内置VA501语音模组,提供丰富的离线语音交互功能,不仅支持连续对话、深度定制指令词、主被动语音播报,还自带鼾声检测、双区空间识别与床体姿态联动能力。简言之,SleepHub为电动床厂商提供了一套“听得懂指令、能主动守护”的语音交互中枢,帮助产品快速实现智能化升级。随着睡眠健康消费持续升级,电动床正从单一机械调节,向智能化、个性化交互快速演进。

318

音频的驱动

音频校准工具可调整内置 codec 输入增益(包含模拟增益,adc增益),输出增益(包含模拟增益,dac增益,算法增益),侧音增益。生效模式分为实时生效模式,和非实时生效模式,通过 API控制。其中非实时生效模式下,调整的参数将会在下次播放/通话时才能生效。工具可适配整多种应用场景,和多种输入/输出通道。音频工具调整好参数后,可以直接固定到NV文件中,作为默认音频参数。

232

移远通信全面入局XR:发布Hawk+Dolphin产品矩阵,打通XR从参考设计到规模量产的最后一公里

而对于XR,我们坚定地相信,下一代人机交互的核心入口,将是我们的眼睛。面对消费级用户与垂直行业提出的近乎苛刻的新要求——产品要好、速度要快、供应要强,移远提出了"0-1、1-N、1+N"三维能力框架——聚焦XR软硬件参考设计与定义,解决规模化阶段的精密制造与交付速度,以及提供全产业链生态整合服务。算力单元不仅可与AR眼镜连接,提供丰富的OS资源和AI交互能力(以Agent为中心的意图控制与指令交互),还可通过有线或无线方式连接3D头显、显示器等更多种类终端,大大拓展应用场景,成为工作生活中的智能助手。

427

移远这项“小而美”的技术,拿下汽车电子大奖!

同时,它全面支持n41/n77/n78/n79等5G核心频段(覆盖国内主流运营商)和全频段的天线调谐,无论车辆行驶在隧道、山区还是城市密集区,都能保持高速率、低延迟、高可靠的稳定连接。这项技术的“含金量”究竟体现在哪?简单来说,传统射频方案好比买了一套功能繁多的“豪华工具箱”——虽然什么都能干,但车企实际只用到其中几样,却要承担高昂的成本和冗余的功耗。移远通信将继续以硬核创新为引擎,携手产业链伙伴,推动5G车载通信从“高端选配”加速迈向“规模标配”“深度定制”,共同奔赴智能出行新未来。

212

MWC26上海 | 移远RG155UC-CN:突破性架构精裁,成就5G RedCap“质优价更轻”

6月26日,在MWC26上海展会期间,作为面向RedCap场景深度定制的标杆模组,RG155UC-CN真正实现“轻量5G,硬核性能”。产品以三大核心优势,全方位解决传统5G模组尺寸偏大、功耗偏高、场景适配受限等行业痛点,为等海量轻量化终端提供高性价比、高效率的5G规模化落地全新方案,推动5G RedCap全面迈入普惠商用新阶段。

369

MWC26上海直击!移远割草机器人解决方案:让庭院作业“智”在必得

6月25日,在MWC26上海展会期间,当前,家用与商用智能割草机器人市场迎来规模化增长,行业竞争日趋白热化,各大厂商对产品快速落地、性能稳定可靠、高性价比的需求达到前所未有的高度。在此背景下,一套兼顾高效、优质、高性价比的全链路解决方案,已然成为决胜市场的关键。过去,开发一个新机型往往需要从底层硬件做起,从零开始进行系统设计、硬件搭建与调试,周期长、投入大。移远的破局之道在于“积木式”模块化设计。

217

数码管-应用

数码管/LED 点阵是嵌入式系统中常见的显示方案,该方案比 LCD 显示屏占用更少的引脚和内存资源,实现也更加简单,比较适合计时、计数、状态显示等具有单一显示需求的应用场景。数码管主要有 LED 数码管、LCD 数码管和 VFD 数码管等类型。

209

MWC26上海 | 移远首款MediaTek平台旗舰级AI算力模组震撼登场

6月25日,在MWC26上海展会期间,,打通了高阶AI算力向千行百业端侧渗透的关键脉络。,广泛适用于等高端场景,助力客户在边缘计算与AI原生应用浪潮中抢占先机。MediaTek物联网事业部总经理王镇国表示:“移远是MediaTek长期信赖的战略合作伙伴,此次作为MediaTek Genio Pro 旗舰平台的首批客户深度参与联合研发,意义深远。

358

触摸屏-应用

驱动中已经集成了电阻触摸屏的校准算法,校准过程屏幕会点亮四个点,依次点击来校准,采集数据进行数据比对,误差太大则点击失败,重新点击。调用校准函数 xtp2046.adjust()将会在屏幕上开始校准的过程,校准完成后,将参数保存在文件中,下次初始化 xtp2046 时读取校准数据,避免每次使用前的重复校准。触摸屏的分辨率设置也是很重要的,因为触摸屏旋转后的换算依赖于触摸屏的宽和高分辨率大小,设置不当将无法得到正确的旋转效果。每种类型的触摸屏都有其优点和适用的场合,选择哪种类型主要取决于具体的应用需求。

266

显示器-调试

请参考LCM 接口 API和SPI LCD 接口 API。lcd.mipi_init 接口原型参数类型说明initbufbytearray必传,传入 MIPI 的配置命令widthint缺省值:480,屏幕的宽度,单位像素,示例:width=400hightint缺省值:854,屏幕的高度,单位像素,示例:hight=800bppint缺省值:16,像素深度DataLaneint缺省值:2,数据通道MipiModeint。

268

通过AEC-Q104测试!移远5G+AI智能座舱模组以硬核实力领跑赛道

AEC-Q104是由汽车电子协会(AEC)制定的针对车载多芯片模块(MCM)的可靠性测试标准,覆盖极端高低温、温度冲击、振动、机械冲击等多维严苛测试,是车载电子进入前装供应链的核心准入门槛。而AS830M可彻底改变这一局面,减轻客户的重复测试负担,显著降低系统失效风险与供应链管理成本,有效缩短前装量产周期,助力高端智能座舱快速、安全落地。未来,移远通信将持续推进不同算力规格舱联模组的AEC-Q104合规测试,助力汽车行业域控融合,为客户提供更多优质的舱联解决方案。

279

锚定AI原生新赛道!移远携全系车载方案闪耀2026高通汽车峰会

6月4-5日,以“智启新程”为主题的2026高通汽车技术与合作峰会在无锡国际会议中心盛大举行。全球整车厂、Tier 1及产业链领军企业齐聚一堂,共探智能汽车产业新趋势。会上,发表致辞。孟樸指出,汽车正从交通工具演变为高度智能化、持续进化的移动空间,并将进一步成为智能体A最重要的移动载体之一,能够感知环境、理解用户、协同服务。2026年已进入“智能体之年”,AI智能体正推动人机交互与设备协同迈向新阶段。高通凭借从终端到数据中心的跨层级系统能力,让智能无处不在、触手可及。

322

显示器-应用

对屏幕进行分类的讨论将有助于我们对驱动的理解,这里将按照屏幕可显示的色彩来分类,而非 OLED、LCD 等屏幕的面板材料。旋转了屏幕后,显示内容不见了。这可能是因为屏幕面板的分辨率小于屏幕控制器的分辨率,导致旋转后显示区域没有完全落在屏幕面板上,这时应考虑设置正确的显示区域偏移。现代显示器的种类非常多样化,它们用于各种不同的设备和应用,从个人计算机到商业广告屏,从手机到电视,从游戏设备到嵌入式设备等。嵌入式系统中的显示器需求可能会根据具体的应用和性能需求有所不同,因此选择适合的显示器类型是非常重要的。

339

USB应用指导

当设备被连接到主机时,设备控制器驱动需要识别这个事件,并响应主机的初始化请求,例如提供设备描述符(Device Descriptor),这是一个描述设备特性(例如设备类型、制造商ID、产品ID等)的数据结构。蜂窝通信模组作为一个USB设备(或称为USB从设备,USB Device),可以通过USB接口连接到主机(比如PC或嵌入式主控板)。以上的速率都是理论上的最高值,在实际应用中,由于各种原因(包括但不限于USB控制器的性能,设备的性能,线缆的质量,以及系统的负载等),实际的传输速率可能会低于这些值。

267

ADC-应用

因此,一个8位的ADC可以将输入范围分成2的8次方(256)个不同的离散级别,而一个12位的ADC可以将输入范围分成2的12次方(4096)个离散级别。检测电池电压的原理是采用电阻分压的方法,即硬件上用两个电阻把电池电压进行比例分压,把分压后的电压送到模组ADC管脚进行检测,软件根据模组ADC读取的电压值经过换算计算出电池的电压。连接硬件:如下图所示,ME4055A的CHRG和STDBY分别接模组的GPIO,BAT接电池正极,VCC接电源,通过把电池电压分压,接入到模组的ADC管脚,以测量电池电压。

258

PWM- 脉宽调制

对于直流电机来讲,当给电机提供电源时,电机会转动,但是是一点一点的提速,在突然停止供电给电机供电时,电机由于电感有防止电流突变的作用是不会停止的,会保持这原有的转速,以此往复,电机的转速就是周期内输出的平均电压值,所以实质上我们调速是将电机处于一种,似停非停,似全速转动又非全速转动的状态,那么在一个周期的平均速度就是我们占空比调出来的速度了。上图中,T 表示周期,W 表示脉宽,ton 是高电平阶段,toff 是低电平阶段,则 T=ton+toff,频率 f=1/T,占空比=W/T。

348
上一篇: 嵌入式玩家必看!Quecpython 外部中断,手把手教你搞懂实时响应
下一篇: 玩转摄像头!Quecpython平台摄像头开发指南来啦~
移远通信
移远通信 企业官方账号 企业官方账号
博客等级 码龄7年 1519粉丝 517原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值