在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

地平線旭日X3派試用-玩轉串口通信

地瓜機器人 ? 2022-07-22 11:27 ? 次閱讀

旭日X3派開發板提供了40PIN標準接口,方便用戶擴展外圍設備。其中物理引腳編號8和10為串口通信發送和接收使用(8-TXD,10-RXD)。

pYYBAGLaE8CAE2wjAAdIi78KVQI110.png

40PIN引腳功能和位置編號如下:

pYYBAGLaE7uADuXeAAE1AeazLiE943.png

串口轉USB設備引腳和功能描述如下:

pYYBAGLJQ2OARAB9ABAuIiD4g3g360.png

我們可以使用3根杜邦線 + 一個串口轉USB設備(旭日X3派開發包附贈) + 一臺筆記本電腦 + putty(串口工具)搭建串口通信開發環境。

如下圖示:

1)6號管腳和串口轉USB GND連接

2)8號管腳和串口轉USB RXD連接

3)10號管腳和串口轉USB TXD連接

pYYBAGLaE7yATYOzAAJWpFrGqI8497.jpg

從40PIN管腳功能圖我們知道,8號和10號管腳為UART3,對應的設備文件為 /dev/ttyS3。

環境搭建完成后,我們來編寫一個簡單的程序庫操作串口。

//頭文件

#ifndef SERIAL_H#define SERIAL_Htypedef struct Serial Serial;struct Serial{ int (*Open)(Serial *pDevice, const char *sDevice, int baudrate); void (*Close)(Serial *pDevice); int (*Write)(Serial *pDevice, const char *buf, int len); int (*Read)(Serial *pDevice, char *buf, int len);};Serial* CreateSerialDevice();void DestroySerialDevice(Serial *pDevice);#endif //SERIAL

//實現文件

#include #include #include #include #include #include #include #include "serial.h"typedef struct SerialImpl{ Serial base; int handle; int baudrate; char sDevice[64];}SerialImpl;int speed_arr[] = {B1500000, B1152000, B1000000, B921600, B576000, B500000, B460800, B230400, B115200, B57600, B38400, B19200, B9600, B4800, B2400, B1800, B1200, B600, B300, B200, B150, B134, B110, B75, B50, B0};int baudrate_arr[] = {1500000, 1152000, 1000000, 921600, 576000, 500000, 460800, 230400, 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1800, 1200, 600, 300, 200, 150, 134, 110, 75, 50, 0};int serial_setting(Serial *pDevice, int baudrate);void serial_close(Serial *pDevice);int serial_comspeed_get(int baudrate){ for (int i = 0; i < sizeof(baudrate_arr)/ sizeof(baudrate_arr[0]); ++i) { if (baudrate_arr[i] == baudrate) { return speed_arr[i]; } } return -1;}int serial_open(Serial *pDevice, const char *sDevice, int baudrate){ int handle = -1; SerialImpl *impl = (SerialImpl*)pDevice; if (!impl) { return -1; } if (!sDevice || sDevice[0] == '\0') { return -2; } handle = open(sDevice, O_RDWR, 0); if (-1 == handle) { perror("open"); return -3; } impl->handle = handle; snprintf(impl->sDevice, sizeof(impl->sDevice), "%s", sDevice); if (0 != serial_setting(pDevice, baudrate)) { serial_close(pDevice); return -4; } return 0;}int serial_setting(Serial *pDevice, int baudrate){ int handle = -1; int speed = 0; struct termios options; SerialImpl *impl = (SerialImpl*)pDevice; if (!impl) { return -1; } handle = impl->handle; if (handle <= 0) { return -2; } speed = serial_comspeed_get(baudrate); if (speed < 0) { return -3; } impl->baudrate = baudrate; if (tcgetattr(handle, &options) != 0) { perror("tcgetattr"); return -4; } if (cfsetispeed(&options, speed) != 0 || cfsetispeed(&options, speed) != 0) { perror("cfsetispeed"); return -5; } //no partity options.c_cflag &= ~PARENB; options.c_iflag &= ~INPCK; //8bits options.c_cflag |= CS8; //stop 1bits options.c_cflag &= ~CSTOPB; //no flow control options.c_cflag &= ~CRTSCTS; options.c_cflag &= ~CSIZE; if (tcsetattr(handle, TCSANOW, &options) != 0) { perror("tcsetattr"); return -6; } return 0;}int serial_read(Serial *pDevice, char *buf, int len){ int handle = -1; int size = 0; SerialImpl *impl = (SerialImpl*)pDevice; if (!impl) { return -1; } handle = impl->handle; if (handle <= 0) { return -2; } if (!buf || len <= 0) { return -3; } size = read(handle, buf, len); if (-1 == size) { perror("read"); return -4; } return size;}int serial_write(Serial *pDevice, const char *buf, int len){ int handle = -1; int size = 0; SerialImpl *impl = (SerialImpl*)pDevice; if (!impl) { return -1; } handle = impl->handle; if (handle <= 0) { return -2; } if (!buf || len <= 0) { return -3; } size = write(handle, buf, len); if (-1 == size) { perror("write"); return -4; } return size;}void serial_close(Serial *pDevice){ int handle = -1; SerialImpl *impl = (SerialImpl*)pDevice; if (!impl) { return; } handle = impl->handle; if (handle != -1) { close(handle); }}Serial* CreateSerialDevice(){ SerialImpl *pDevice = (SerialImpl*)malloc(sizeof(SerialImpl)); if (pDevice) { pDevice->base.Open = serial_open; pDevice->base.Close = serial_close; pDevice->base.Write = serial_write; pDevice->base.Read = serial_read; pDevice->handle = -1; pDevice->baudrate = 0; pDevice->sDevice[0] = '\0'; } return (Serial*)pDevice;}void DestroySerialDevice(Serial *pDevice){ if (pDevice) { pDevice->Close(pDevice); free(pDevice); }}

//測試文件

#include #include #include #include #include "serial.h"int main(int argc, char *argv[]){ char sbuf[128]; int count; int size; int ret; Serial *port = CreateSerialDevice(); assert(port != NULL); ret = port->Open(port, "/dev/ttyS3", 921600); assert(ret == 0); while (1) { snprintf(sbuf, sizeof(sbuf), "%d", count++); size = port->Write(port, sbuf, strlen(sbuf)); assert(size != -1); usleep(1000*1000); } port->Close(port); DestroySerialDevice(port); return 0;}

//工程文件

cmake_minimum_required(VERSION 3.0)project(serial)set(CMAKE_BUILD_TYPE "Debug")add_library(serial SHARED serial.c)add_executable(echo echo.c)target_link_libraries(echo serial)

測試結果:

X3派側echo每隔1s發送一次遞增數據,PC側putty接收并打印。

pYYBAGLaE7uAGV24AADFrS9UlYk048.jpg

文中所有文件,均已打包在附件中。歡迎大家一起來玩轉串口通信吧

「地平線旭日X3派,開啟你的嵌入式開發之旅」,歡迎正在閱讀的你申請試用,一起交流開發心得

本文轉自地平線開發者社區

原作者:大道至簡

原鏈接:https://developer.horizon.ai/forumDetail/98129540173361338

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5092

    文章

    19176

    瀏覽量

    307438
  • AI
    AI
    +關注

    關注

    87

    文章

    31493

    瀏覽量

    270180
  • 人工智能
    +關注

    關注

    1796

    文章

    47643

    瀏覽量

    240077
收藏 人收藏

    評論

    相關推薦

    知行科技與地平線達成戰略合作

    近日,知行科技與地平線正式簽署了戰略合作協議,標志著雙方在智能駕駛技術領域的合作邁出了堅實的一步。 根據協議內容,雙方將共同致力于智能駕駛技術的研發與應用。特別是在2025年下半年,基于地平線征程6
    的頭像 發表于 01-23 10:52 ?1098次閱讀

    地平線SuperDrive相關問答

    近日,地平線SuperDrive智駕百人團體驗活動圓滿落幕,現場130余家媒體對地平線SuperDrive表現出濃厚的興趣并提出了諸多問題。對此,地平線特意整理了大家提出的典型問題并進行解答,希望能幫助大家更全面地了解這套擬人的
    的頭像 發表于 01-21 10:15 ?99次閱讀

    地平線SuperDrive首發三大黑科技,決勝智能化競爭下半場

    地平線創始人兼CEO余凱表示:“在2025年,地平線智能計算方案即將邁過1000萬量產大關,持續引領中國智駕量產落地、推動智駕生態繁榮生長,‘向下扎深根’。與此同時,地平線SuperDrive及征程
    的頭像 發表于 01-15 09:12 ?969次閱讀
    <b class='flag-5'>地平線</b>SuperDrive首發三大黑科技,決勝智能化競爭下半場

    地平線SuperDrive首發三大黑科技

    近日,“Beyond the Horizon 地平線智駕科技暢想日”在上海舉辦,回顧地平線以軟硬結合技術實力取得的量產創新成果,展望2025高階智駕爆發之年。同時,“SuperDrive智駕百人團體驗活動”在上海靜安區繁華路段開展,首發三大智駕黑科技,打造擬人高效、“10
    的頭像 發表于 01-14 13:56 ?138次閱讀

    光庭信息獲地平線堅實后盾獎

    后盾獎”,高度肯定了雙方過往在智駕領域的合作成效。 過去兩年內,光庭信息基于地平線 J3、J5 及 J6 等多個平臺,打造了“泊車與駕駛一體化解決方案”,提供高性能的自動駕駛和泊車功能,可以輕松實現跨平臺遷移和新應用開發,有效幫助
    的頭像 發表于 12-28 15:07 ?254次閱讀

    地平線榮獲比亞迪“最佳合作伙伴獎”

    近日,比亞迪舉辦2024年比亞迪新能源汽車核心供應商大會。在此次大會上,地平線榮獲“最佳合作伙伴獎”,成為唯一獲得該殊榮的智駕方案供應商。該獎項高度肯定了地平線在智駕技術和量產能力方面的突出貢獻。地平線創始人兼CEO余凱受邀出席
    的頭像 發表于 11-06 14:15 ?447次閱讀

    智駕科技企業地平線登陸港交所

    近日,智駕科技企業地平線地平線機器人-W,股票代碼:9660.HK)在香港交易所主板成功掛牌上市,募資總額高達54.07億港元,成為港股今年最大的科技IPO。
    的頭像 發表于 10-28 16:37 ?337次閱讀

    ETAS支持地平線征程6 AUTOSAR版本發布

    地平線于2024年北京車展期間推出了覆蓋自動駕駛全場景的征程6產品。征程6是地平線新一代家族系列產品,能夠覆蓋從主動安全ADAS到城區全場景NOA的智能駕駛需求。
    的頭像 發表于 10-15 17:34 ?821次閱讀

    智駕科技企業地平線通過港交所聆訊 IPO進入倒計時

    10月8日,中國智能駕駛軟硬一體化方案地平線迎來IPO的最新進展:港交所網站掛出地平線PHIP版招股書,這意味著智駕科技企業地平線(Horizon Robotics)正式通過港交所聆訊,即將踏入港股市場。根據網站掛出的信息顯示,
    的頭像 發表于 10-09 10:05 ?4248次閱讀
    智駕科技企業<b class='flag-5'>地平線</b>通過港交所聆訊 IPO進入倒計時

    地平線Journey 3的電源設計

    電子發燒友網站提供《地平線Journey 3的電源設計.pdf》資料免費下載
    發表于 09-04 10:48 ?0次下載
    <b class='flag-5'>地平線</b>Journey <b class='flag-5'>3</b>的電源設計

    地平線技術開放日:余凱勾勒智能駕駛新藍圖

    在8月28日的地平線技術開放日上,公司創始人兼CEO余凱以高調的姿態,詳細闡述了地平線在智能駕駛領域的雄心壯志與商業邏輯。他不僅重申了地平線的定位,還明確了SuperDrive智能駕駛解決方案的標桿地位,并強調了軟件在芯片公司生
    的頭像 發表于 08-30 14:33 ?1200次閱讀

    地平線港股IPO獲證監會備案

    自動駕駛領域的明星企業——地平線機器人(Horizon Robotics),近期獲得了中國證監會的批準,將在香港聯合交易所進行首次公開募股(IPO)。此次IPO的順利推進,標志著地平線向資本市場邁出了重要一步。
    的頭像 發表于 08-13 15:37 ?738次閱讀

    智能駕駛頭部企業地平線赴港IPO

    地平線向港交所遞交了上市申請,正式啟動港股IPO進程,這一行動引起了市場的廣泛關注。在此次上市過程中,高盛、摩根士丹利以及中信建投共同擔任聯席保薦人,為地平線的上市之路提供了強大的支持。
    的頭像 發表于 03-28 16:45 ?899次閱讀

    地平線提交香港IPO申請

    智能駕駛計算方案提供商“地平線”正式遞交港股上市申請。據其公開文件,地平線在2023年實現了15.5億元的營收,同比顯著增長71.3%,毛利達到10.94億元,毛利率高達70.5%。
    的頭像 發表于 03-27 16:11 ?764次閱讀

    地平線向港交所遞交招股書

    智能駕駛計算方案領軍者地平線,近日正式向港交所遞交了招股書,高盛、摩根士丹利及中信建投為其聯席保薦人。這并非地平線首次試水資本市場,早在2021年,地平線就計劃科創板上市,并一度傳出赴美IPO的消息,但受資本市場環境影響,其上市
    的頭像 發表于 03-27 16:02 ?591次閱讀
    主站蜘蛛池模板: 天天av天天翘天天综合网 | 亚洲日本中文字幕天天更新 | 日本特黄色大片 | 久久久国产精品网站 | 日韩一级在线视频 | 欧美午夜大片 | 九月色婷婷 | 亚洲最大色网站 | 日本tv欧美tv天堂 | brazzersvideosexhd欧美高清 | 欧美一级欧美三级在线 | 亚洲男人的性天堂 | 午夜精品区 | 国产精品综合色区在线观看 | 男人的天堂一区二区视频在线观看 | 2021国产精品午夜久久 | 欧美三级免费网站 | 国产精品视频一区二区三区 | 亚洲αv久久久噜噜噜噜噜 亚洲аv电影天堂网 | 性欧美极品另类 | 中文字幕1区2区 | 亚洲高清中文字幕一区二区三区 | 成年网站在线看 | 日本黄大片在线观看 | 色成人免费网站 | 久久久免费观看 | 97久久伊人精品影院 | 成人欧美一区二区三区白人 | 亚洲伊人精品综合在合线 | 中文在线免费看影视 | 国产日韩精品欧美一区色 | 韩国三级无遮挡床戏视频 | a毛片成人免费全部播放 | 国产高清在线播放免费观看 | 狠狠干狠狠操视频 | 亚洲色图视频在线 | 四虎永久在线精品免费影视 | 黄色字幕网| 国产精品久久久久久久牛牛 | 91大神大战丝袜美女在线观看 | 999av视频 |