精华内容
下载资源
问答
  • 串口透传

    2020-04-16 16:39:50
    透明传输。就是不管所传输的内容、数据协议形式。...串口透传这个词汇一般出现在串口模块中,串口模块接上MCU用透传方式把MCU要发的数据发送到接收端,串口模块不会对MCU要发送的数据做任何处理。 mcu都...

    透明传输。就是不管所传输的内容、数据协议形式。只是把需要传输的内容当成一组二进制数据完美地传输到接收端。不对要传的数据做任何处理。
    就像《非常人贩》里的斯坦森那样,他不管后备箱里送的到底是货物还是毒品、是猪肉还是女人……只负责把货物送到目的地。
    串口透传这个词汇一般出现在串口模块中,串口模块接上MCU用透传方式把MCU要发的数据发送到接收端,串口模块不会对MCU要发送的数据做任何处理。

    mcu都有串口,串口也是最简单、最常见的mcu通讯方式。而串口透传实际上使用的其他的通讯方式,比如以太网、蓝牙、zigbee、gprs等等,而串口数据作为这些协议帧中的数据区。本质上是其他通讯方法。但是对于嵌入式的开发者来说,实际上是对串口进行编程,对数据的接收、发送都是使用串口。而数据的传输实际是通过其他方式,透传模块(或芯片)负责把串口数据以其他方式(比如蓝牙)发送、同时也把收到的数据转化成串口数据。这样对于嵌入式mcu(嵌入式程序员)这些模块相当于透明的。使用透传模块可以简化编程(不用实现复杂的协议栈)、增加灵活性(模块化,更换透传模块可以改变通讯方式【近距离蓝牙--gprs手机网络】)、使老设备具有新的通讯方式(以前的设备可能并没有源码,只增加透传模块就可利用现在高级网络)。

    展开全文
  • 【实例截图】【核心代码】串口透传程序└── 串口透传程序├── components│ ├── basicrf│ │ ├── basic_rf.c│ │ ├── basic_rf.h│ │ ├── basic_rf_security.c│ │ ├── basic_rf_securit...

    【实例简介】

    串口将收到的数据通过无线发送出去,将收到的无线数据通过串口发送出去.

    【实例截图】

    【核心代码】

    串口透传程序

    └── 串口透传程序

    ├── components

    │   ├── basicrf

    │   │   ├── basic_rf.c

    │   │   ├── basic_rf.h

    │   │   ├── basic_rf_security.c

    │   │   ├── basic_rf_security.h

    │   │   ├── hal_pkt.h

    │   │   ├── hal_rf.c

    │   │   └── hal_rf.h

    │   ├── common

    │   │   ├── cc8051

    │   │   │   └── hal_cc8051.h

    │   │   ├── clock.h

    │   │   ├── hal_adc.c

    │   │   ├── hal_adc.h

    │   │   ├── hal_defs.h

    │   │   ├── hal_dma.c

    │   │   ├── hal_dma.h

    │   │   ├── hal_drivers.c

    │   │   ├── hal_drivers.h

    │   │   ├── hal_flash.c

    │   │   ├── hal_flash.h

    │   │   ├── hal_int.c

    │   │   ├── hal_int.h

    │   │   ├── hal_mcu.c

    │   │   ├── hal_mcu.h

    │   │   ├── hal_timer.c

    │   │   ├── hal_timer.h

    │   │   ├── hal_types.h

    │   │   ├── hal_uart.c

    │   │   ├── hal_uart.h

    │   │   ├── _hal_uart_isr.c

    │   │   ├── util.c

    │   │   └── util.h

    │   ├── radios

    │   │   └── cc2530

    │   │   ├── adc.c

    │   │   ├── adc.h

    │   │   ├── clock.c

    │   │   ├── clock.h

    │   │   ├── hal_mcu.c

    │   │   ├── hal_rf.c

    │   │   ├── hal_rf_security.c

    │   │   ├── hal_rf_util.c

    │   │   └── hal_timer_32k.c

    │   ├── targets

    │   │   ├── common

    │   │   │   └── hal_lcd_srf05.c

    │   │   ├── interface

    │   │   │   ├── hal_assert.h

    │   │   │   ├── hal_button.h

    │   │   │   ├── hal_digio.h

    │   │   │   ├── hal_int.h

    │   │   │   ├── hal_joystick.h

    │   │   │   ├── hal_lcd.h

    │   │   │   ├── hal_led.h

    │   │   │   ├── hal_mcu.h

    │   │   │   ├── hal_rf.h

    │   │   │   ├── hal_rf_security.h

    │   │   │   ├── hal_rf_util.h

    │   │   │   ├── hal_timer_32k.h

    │   │   │   └── hal_uart.h

    │   │   └── router

    │   │   ├── hal_board_cfg.h

    │   │   └── hal_board.h

    │   └── utils

    │   ├── util_buffer.c

    │   ├── util_buffer.h

    │   ├── util.c

    │   ├── util.h

    │   ├── util_lcd.c

    │   ├── util_lcd.h

    │   └── util_menu.h

    ├── Debug

    │   ├── Exe

    │   │   └── SerialToWireless.hex

    │   └── Obj

    │   ├── basic_rf.r51

    │   ├── hal_adc.r51

    │   ├── hal_dma.r51

    │   ├── hal_flash.r51

    │   ├── hal_int.r51

    │   ├── hal_mcu.r51

    │   ├── hal_rf.r51

    │   ├── hal_timer.r51

    │   ├── hal_uart.r51

    │   ├── jyz_relay.pbd

    │   ├── main.r51

    │   ├── my_uart.r51

    │   ├── relay.pbd

    │   ├── SerialToWireless.pbd

    │   └── util.r51

    ├── hal_uart.c

    ├── hal_uart.h

    ├── main.c

    ├── SerialToWireless.dep

    ├── SerialToWireless.ewd

    ├── SerialToWireless.ewp

    ├── SerialToWireless.eww

    ├── settings

    │   ├── jyz_relay.cspy.bat

    │   ├── jyz_relay.dbgdt

    │   ├── jyz_relay.dni

    │   ├── jyz_relay.wsdt

    │   ├── relay.cspy.bat

    │   ├── relay.dbgdt

    │   ├── relay.dni

    │   ├── relay.wsdt

    │   ├── SerialToWireless.cspy.bat

    │   ├── SerialToWireless.dbgdt

    │   ├── SerialToWireless.dni

    │   └── SerialToWireless.wsdt

    └── 数据流程.jpg

    16 directories, 98 files

    展开全文
  • 串口透传一、 串口能打印出“hello world”1、串口初始化在初始化函数中加入:MT_UartInit();更改流控:#define MT_UART_DEFAULT_OVERFLOW FALSE编译选项:2、 登记任务号MT_UartRegisterTaskID(task_id);//登记任务...

    串口透传

    一、 串口能打印出“hello world”

    1、串口初始化

    在初始化函数中加入:

    MT_UartInit();

    更改流控:

    #define MT_UART_DEFAULT_OVERFLOW FALSE

    编译选项:

    2、 登记任务号

    MT_UartRegisterTaskID(task_id);//登记任务号

    3、串口发送:

    HalUARTWrite(0,”Hello World\n”,12); //(串口0,‘字符’,字符个数。)

    4、加入头文件:

    #include “MT_UART.h”

    二、 无线传输

    1、

    我们打开SampleApp.C文件,搜索找到函数:

    void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )

    在case SAMPLEAPP_PERIODIC_CLUSTERID:下面加入

    HalUARTWrite(0,”I get data\n”,11);

    2、

    分别下载到协调器和终端;

    如果协调器收不到数据,可以重启一下终端。

    3、接收函数更改如下:

    //HalUARTWrite(0,"I get data\n",11);

    HalUARTWrite(0, &pkt->cmd.Data[0],pkt->cmd.DataLength); //打印收到数据

    HalUARTWrite(0,"\n",1); //回车换行

    3、 发送函数更改如下:

    void SampleApp_SendPeriodicMessage( void)

    {

    uint8 data[10]={'0','1','2','3','4','5','6','7','8','9'};if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,

    SAMPLEAPP_PERIODIC_CLUSTERID,10,//1,

    data,//(uint8*)&SampleAppPeriodicCounter,

    &SampleApp_TransID,

    AF_DISCV_ROUTE,

    AF_DEFAULT_RADIUS )==afStatus_SUCCESS )

    {

    }else{//Error occurred in request to send.

    }

    }

    4、再次下载

    三、 串口透传

    1、 添加串口有数据过来事件:

    switch ( MSGpkt->hdr.event)

    {case CMD_SERIAL_MSG: //串口收到数据后由MT_UART层传递过来的//数据,用网蜂方法接收,编译时不定义MT//相关内容

    SampleApp_SerialCMD((mtOSALSerialData_t *)MSGpkt);break;

    2、 添加事件处理函数:

    void SampleApp_SerialCMD(mtOSALSerialData_t *cmdMsg)

    {

    uint8 i,len,*str=NULL; //len有用数据长度

    str=cmdMsg->msg; //指向数据开头

    len=*str; //msg里的第1个字节代表后面的数据长度/********打印出串口接收到的数据,用于提示*********/

    for(i=1;i<=len;i++)

    HalUARTWrite(0,str+i,1);

    HalUARTWrite(0,"\n",1 );//换行//HalUARTWrite(0,str+1,len);

    if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,

    SAMPLEAPP_COM_CLUSTERID,//自己定义一个

    len+1, //数据长度

    str, //数据内容

    &SampleApp_TransID,

    AF_DISCV_ROUTE,

    AF_DEFAULT_RADIUS )==afStatus_SUCCESS )

    {

    }else{//Error occurred in request to send.

    }

    }

    3、SAMPLEAPP_COM_CLUSTERID定义如下:

    3、 添加头文件:

    #include "MT.h"

    4、 声明:

    void SampleApp_SerialCMD(mtOSALSerialData_t *cmdMsg);

    5、 串口通过无线的方式发数据过来:

    void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )

    {

    uint16 flashTime;

    uint8 i,len;switch ( pkt->clusterId )

    {case SAMPLEAPP_COM_CLUSTERID: //如果是串口透传的信息

    len=pkt->cmd.Data[0];for(i=0;i

    HalUARTWrite(0,&pkt->cmd.Data[i+1],1);//发给PC机

    HalUARTWrite(0,"\n",1); //回车换行

    break;/*case SAMPLEAPP_PERIODIC_CLUSTERID:

    //HalUARTWrite(0,"I get data\n",11);

    HalUARTWrite(0, &pkt->cmd.Data[0],pkt->cmd.DataLength); //打印收到数据

    HalUARTWrite(0,"\n",1); // 回车换行

    break;

    case SAMPLEAPP_FLASH_CLUSTERID:

    flashTime = BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2] );

    HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) );

    break;*/}

    }

    展开全文
  • 串口透传.txt

    2019-10-25 17:10:50
    串口透传 实用的分析调试工具
  • mtk7686的串口透传[复制链接]最近自己的项目中使用了mtk7686WiFi芯片,以前从没有接触过mtk的任何WiFi芯片,顿时头大啊,找了fae要了资料,很可怜,竟然只有sdk和几个简单的文档,无奈之下,只能自己慢慢的研究,要...

    mtk7686的串口透传

    [复制链接]

    最近自己的项目中使用了mtk7686WiFi芯片,以前从没有接触过mtk的任何WiFi芯片,顿时头大啊,找了fae要了资料,很可怜,竟然只有sdk和几个简单的文档,无奈之下,只能自己慢慢的研究,要了开发板,开始了痛苦的研发旅程。

    进入sdk,里面好多例程,有apps的应用例程,hal驱动例程,仔细看看了各个例程,最好选择了lwip_socket例程作为基础,在这个例程上增加串口透传功能,

    图片1.png (39.24 KB, 下载次数: 0)

    2019-3-18 22:12 上传

    把sdk拷贝到Ubuntu16.04环境下,进入lwip_socket里面找到main.c,使用gedit打开main文件,增加如下内容

    首先设定AP的参数及服务器IP和端口

    #define WIFI_SSID                ("testlk")

    #define WIFI_PASSWORD            ("12345678")

    #define Serverip_addr                 ("192.168.43.98")

    #define SOCK_TCP_SRV_PORT        6500

    定义串口缓存

    #define VFIFO_SIZE (256)

    ATTR_ZIDATA_IN_NONCACHED_RAM_4BYTE_ALIGN static uint8_t g_uart_send_buffer [VFIFO_SIZE];

    定义WiFi缓存

    #define WIFI_TX_BUF_SIZE         100

    uint8_t wifi_send_buf[WIFI_TX_BUF_SIZE];

    继续定义WiFi透传使用的结构体积相关变量

    typedef struct

    {

    uint16_t size;

    uint8_t * data;

    }wifi_send_msg_t;

    wifi_send_msg_t wifi_msg;

    static QueueHandle_t wifi_send_queue;

    #define WIFI_SEND_QUEUE_LENGTH 1

    typedef struct MSG

    {

    uint32_t size;

    uint8_t  data[WIFI_TX_BUF_SIZE];

    }MSG_T;

    MSG_T g_tMsg;

    随后修改tcp客户端代码,代码如下

    static void client_test_thread(void *not_used)

    {

    int ret;

    char send_data[] = "send reveive uart data to network!\n";

    ret = tcp_client_test();

    if (ret == 0) {

    LOG_I(lwip_socket_example, "example project test success.\n");

    }

    //Keep the task alive

    while (1) {

    if(xQueueReceive(wifi_send_queue,(void *)&g_tMsg,portMAX_DELAY) == pdPASS )

    {

    ret  = lwip_write(socket_handle,g_uart_send_buffer, g_tMsg.size);

    LOG_I(lwip_socket_example, " lwip wrtie uart data success.\n");

    g_lwip_write_done=true;

    }

    else

    {

    LOG_I(lwip_socket_example, " lwip no uart data receive.\n");

    vTaskDelay(1000 / portTICK_RATE_MS); // release CPU

    }

    }

    }

    增加串口初始化和回调函数,代码如下

    static void uart_read_from_input(hal_uart_callback_event_t event, void *user_data)

    {

    if (event == HAL_UART_EVENT_READY_TO_READ)

    {

    g_uart_receive_event = true;

    printf("rcv flag true");

    }

    }

    void Uart_Thread(void * p)

    {

    hal_uart_config_t basic_config;

    hal_uart_dma_config_t dma_config;

    uint32_t length;

    memset(g_uart_send_buffer, 0x00, sizeof(g_uart_send_buffer));

    /* Step1: Call hal_pinmux_set_function() to set GPIO pinmux, if EPT tool was not used to configure the related pinmux.*/

    hal_gpio_init(HAL_GPIO_11);

    hal_gpio_init(HAL_GPIO_12);

    hal_pinmux_set_function(HAL_GPIO_11, HAL_GPIO_11_URXD2);

    hal_pinmux_set_function(HAL_GPIO_12, HAL_GPIO_12_UTXD2);

    /* Configure UART port with basic function */

    basic_config.baudrate = HAL_UART_BAUDRATE_115200;

    basic_config.parity = HAL_UART_PARITY_NONE;

    basic_config.stop_bit = HAL_UART_STOP_BIT_1;

    basic_config.word_length = HAL_UART_WORD_LENGTH_8;

    hal_uart_init(HAL_UART_2, &basic_config);

    /*Step2: Configure UART port to dma mode. */

    dma_config.receive_vfifo_alert_size = RECEIVE_ALERT_SIZE;

    dma_config.receive_vfifo_buffer = g_uart_receive_buffer;

    dma_config.receive_vfifo_buffer_size = VFIFO_SIZE;

    dma_config.receive_vfifo_threshold_size = RECEIVE_THRESHOLD_SIZE;

    dma_config.send_vfifo_buffer = g_uart_send_buffer;

    dma_config.send_vfifo_buffer_size = VFIFO_SIZE;

    dma_config.send_vfifo_threshold_size = SEND_THRESHOLD_SIZE;

    hal_uart_set_dma(HAL_UART_2, &dma_config);

    hal_uart_register_callback(HAL_UART_2, uart_read_from_input, NULL);

    /* Print the prompt content to the test port */

    //hal_uart_send_dma(HAL_UART_2, (const uint8_t *)UART_PROMPT_INFO, UART_PROMPT_INFO_SIZE);

    LOG_I(lwip_socket_example, "create uart task success.\n");

    __enable_irq();

    __enable_fault_irq();

    /*Step3: Loop the data received from the UART input to its output */

    while (1) {

    if (g_uart_receive_event == true)

    {

    length = hal_uart_get_available_receive_bytes(HAL_UART_2);

    if(length!=0)

    {

    hal_uart_receive_dma(HAL_UART_2, g_uart_receive_buffer, length);

    memset(g_uart_send_buffer, 0x00, sizeof(g_uart_send_buffer));

    memcpy(g_uart_send_buffer,g_uart_receive_buffer,length);

    g_uart_send_buffer[0]=n++;

    g_tMsg.size=length;

    hal_uart_send_dma(HAL_UART_2, g_uart_send_buffer, length);

    memcpy(g_tMsg.data,g_uart_send_buffer,g_tMsg.size);

    }

    if(g_lwip_write_done)

    {

    if(xQueueSend(wifi_send_queue, (void*)&g_tMsg, 0)!= pdPASS)

    {

    //printf("xQueueSendFromISR fail\n");

    }

    else

    {

    g_lwip_write_done=false;

    }

    }

    g_uart_receive_event = false;

    }

    vTaskDelay(100 / portTICK_RATE_MS); // release CPU

    }

    }

    完成以上的基础工作后,开始在freertos里面建立线程,代码如下

    static void user_entry(void *args)

    {

    lwip_net_ready();

    LOG_I(lwip_socket_example, "Begin to create socket_sample_task");

    //xTaskHandle xHandle;

    if (pdPASS != xTaskCreate(client_test_thread,

    SOCKET_CLINET_EXAMPLE_TASK_NAME,

    SOCKET_EXAMPLE_TASK_STACKSIZE / sizeof(portSTACK_TYPE),

    NULL,

    SOCKET_EXAMPLE_TASK_PRIO,

    NULL)) {

    LOG_I(lwip_socket_example, "Cannot create socket_sample_task");

    }

    LOG_I(lwip_socket_example, "Finish to create socket_sample_task");

    while (1) {

    vTaskDelay(1000 / portTICK_RATE_MS); // release CPU

    }

    }

    在main函数里加入串口和tcp客户端的线程,代码如下

    if (pdPASS != xTaskCreate(user_entry,

    USER_ENTRY_TASK_NAME,

    USER_ENTRY_TASK_STACKSIZE / sizeof(portSTACK_TYPE),

    NULL,

    USER_ENTRY_TASK_PRIO,

    NULL)) {

    LOG_E(lwip_socket_example, "create user task fail");

    return -1;

    }

    wifi_send_queue = xQueueCreate(WIFI_SEND_QUEUE_LENGTH,sizeof(struct MSG));

    if (pdPASS != xTaskCreate(Uart_Thread,

    "Uart_Task",

    SOCKET_EXAMPLE_TASK_STACKSIZE / sizeof(portSTACK_TYPE),

    NULL,

    SOCKET_EXAMPLE_TASK_PRIO,

    NULL)) {

    LOG_I(lwip_socket_example, "Cannot create Uart_Thread");

    }

    保存,编译,完成后烧录到mtk7686,在pc及打开网络调试助手,和串口助手就可以进行透传了。由于板卡在单位,不能截图了。

    水平有限,希望大神们多指点。感谢mtk的fae给予指导。

    提示,mtk7686不支持在线调试,只能从串口1下载flash配置文件,编译生成文件见下图

    图片2.png (28.77 KB, 下载次数: 0)

    2019-3-18 22:12 上传

    导入软件FlashTool.exe,选择串口下载即可

    图片3.png (37.26 KB, 下载次数: 0)

    2019-3-18 22:12 上传

    此内容由EEWORLD论坛网友star_66666原创,如需转载或用于商业用途需征得作者同意并注明出处

    展开全文
  • BLE开发板 主从一体串口透传 BLE开发板 主从一体串口透传 BLE开发板 主从一体串口透传
  • BLE串口透传程序

    热门讨论 2014-03-28 00:07:57
    bLE串口透传的代码,适合用于测试BLE串口透传的过程
  • zigbee串口透传

    2013-08-23 15:53:27
    zigbee串口透传 全套代码 亲测可用
  • STM32和树莓派串口透传

    万次阅读 多人点赞 2018-11-21 21:51:46
    树莓派环境串口透传 STM32环境串口透传 最近做一个项目需要STM32和树莓派进行串口通信,实现原理如下: 第一步:使用USB转TTL分别调试STM32和树莓派的串口透传,确保可以通信; 第二步:确保第一步成功后,将...
  • Zigbee串口透传程序

    2016-04-21 17:29:42
    Zigbee串口透传程序,无需了解协议栈
  • cc2541 串口透传.rar

    2020-03-23 23:30:02
    在ti的CC2541 CC2540的基础开发的串口透传模块,有分主从机,可切换,如加@ UART双向透传程序 主机和从机的uart设置均为:57600,8,N,1 该串口透传程序是基于SimpleBLECentral主机和SimpleBLEPeripheral从机...
  • 无线串口透传

    2013-08-01 19:02:21
    zigbee无线串口透传实验代码,使用于CC2530
  • CC2541蓝牙串口透传文档,可作为透传模式开发的参考。
  • python多线程编程实现网络串口透传, 为TCP客户端网口数据串口透传
  • 何为串口透传

    千次阅读 2019-11-08 09:20:57
    转载知乎 透传:透明传输。就是不管所传输的内容、数据协议形式。...串口透传这个词汇一般出现在串口模块中,串口模块接上MCU用透传方式把MCU要发的数据发送到接收端,串口模块不会对MCU要发送的数据做任何...
  • 蓝牙Nordic52832串口透传实验,可以熟悉Nordic芯片开发流程,和蓝牙4.0协议的理解。
  • DA14580蓝牙串口透传教程
  • ZigBee串口透传例子

    2014-08-14 23:33:31
    ZigBee串口透传的例子,一个节点和一个协调器组网,可以互相通过串口发数据给对方。
  • Linux下网络串口透传功能的实现,c语言程序,在使用前请阅读readme.txt
  • 基于Zstack栈协议写的Zigbee串口透传实验。具体参考我的博客:https://blog.csdn.net/O_MMMM_O/article/details/81267913
  • 蓝牙4.0 cc2540串口透传源码

    热门讨论 2014-08-12 02:47:36
    cc2540串口透传源码 蓝牙4.0源码。亲测可用
  • CC2530无线RF使用,串口透传精解-附件资源
  • 新岸线NL6621串口透传WIFI代码
  • 这是一个zigbee组网的双串口透传实验,包含终端节点、路由器结点、协调器结点的代码。能让zigbee模块组网成功,并使用两个串口来调试,代码已验证过,能直接使用。
  • BLE串口透传APP源码,可用接受和发送,,亲测可用;蓝牙芯片CC2540
  • 为MQTT客户端移植,适用于STM32+串口透传模块。 本例程运行环境为正点原子战舰开发板,选用模块为HF-LPD100.请看我博客,有详细应用文章。
  • 分享:ZigBee无线串口透传-源码+使用说明+固件分享:ZigBee无线串口透传-源码+使用说明+固件
  • CH9121 是一款网络串口透传芯片。CH9121内部集成TCP/IP 协议栈,可实现网络数据包和串口数据的双向透明传输,具有TCP CLIENT、TCP SERVER、UDP CLIENT 、UDP SERVER 4 种工作模式,串口波特率最高可支持到921600bps...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 992
精华内容 396
关键字:

串口透传