star_66666

  • 2019-04-18
  • 回复了主题帖: 物联网发展的三大编程语言

    是的啊

  • 回复了主题帖: 在MicroPython中添加外部C模块的方法

    看看啊

  • 2019-04-16
  • 回复了主题帖: 免费尝鲜:ST 双核无线 MCU STM32WB55 开发板

    好东西

  • 2019-04-15
  • 回复了主题帖: 说说你对996的看法

    房贷,车贷,养家,没办法的,有钱人也是不需要加班的,都是我们这些穷人,从外地进入大城市打拼的,无奈无奈,没有人愿意为我们出头的

  • 回复了主题帖: 说说你对996的看法

    现在的公司都在以大环境不好为借口,降工资,安排多点活给个人,强迫加班,没办法,自古就是有钱人的天下,只能忍受,别无他法

  • 2019-04-09
  • 回复了主题帖: 【基于GDF350的无线数字对讲机】

    看看了

  • 回复了主题帖: 国产FPGA傲格芯AGM

    是要试用吗?

  • 2019-04-03
  • 回复了主题帖: CircuitPython在太空

    牛XXXXXXXXXXX

  • 2019-04-02
  • 回复了主题帖: XILINX FPGA开发板

    好东西

  • 2019-03-31
  • 回复了主题帖: RT-Thread 的新书到手了,干货满满

    这样啊

  • 2019-03-27
  • 回复了主题帖: RT-Thread 的新书到手了,干货满满

    zy459994202 发表于 2019-3-27 09:12
    不用太小气啊:loveliness:

  • 2019-03-26
  • 回复了主题帖: RT-Thread 的新书到手了,干货满满

    我就想要这本啊,送我了

  • 回复了主题帖: RT-Thread 的新书到手了,干货满满

    没人抢啊,你wantit什么哦

  • 2019-03-22
  • 回复了主题帖: stm32f769discovery 寄存器配置ETH,无操作系统移植lwip141

    为何?帮你?

  • 2019-03-21
  • 回复了主题帖: RT-Thread 的新书到手了,干货满满

    不要和我抢啊

  • 回复了主题帖: mtk7686的串口透传

    客气了

  • 2019-03-19
  • 加入了学习《vivado教程》,观看 vivado安装

  • 加入了学习《FPGA设计思想与验证方法视频教程(小梅哥主讲)》,观看 作者语_芯航线FPGA开发板介绍

  • 加入了学习《小梅哥公开课:SOPC综合系统设计及实战演练》,观看 SOPC综合系统设计综述

  • 2019-03-18
  • 发表了主题帖: mtk7686的串口透传

    最近自己的项目中使用了mtk7686WiFi芯片,以前从没有接触过mtk的任何WiFi芯片,顿时头大啊,找了fae要了资料,很可怜,竟然只有sdk和几个简单的文档,无奈之下,只能自己慢慢的研究,要了开发板,开始了痛苦的研发旅程。进入sdk,里面好多例程,有apps的应用例程,hal驱动例程,仔细看看了各个例程,最好选择了lwip_socket例程作为基础,在这个例程上增加串口透传功能, 把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 1typedef 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配置文件,编译生成文件见下图 导入软件FlashTool.exe,选择串口下载即可 此内容由EEWORLD论坛网友star_66666原创,如需转载或用于商业用途需征得作者同意并注明出处

统计信息

已有195人来访过

  • 芯币:3226
  • 好友:3
  • 主题:94
  • 回复:1733
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


明远智睿Lan 2018-4-19
多次的一次组成了熟练,多多加油~
查看全部