色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

【中科昊芯Start_DSC28027勇士開發板試用體驗】SCI(UART)通訊

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-11-21 11:14 ? 次閱讀
本文來源電子發燒友社區,作者:xiaopeng, 帖子地址:https://bbs.elecfans.com/jishu_2287977_1_1.html

中科昊芯DSC2802x系列DSP擁有一個SCI(UART)模塊,可以用來作為調試口或者與其它模塊進行通訊。

poYBAGKweKCAEEarAABJIOiQaAw743.jpg


其基本功能如下:
poYBAGKweSyAEr-MAADpQzRtbTY649.jpg


注意,這個sci模塊數據位是可配置為1~8bit,并非我們常見的8~9bit數據位。
還具有增強功能:
pYYBAGKwedeAJvy7AAAUQ9XheyQ869.jpg

也就是說硬件可以自動檢測波特率,功能還是很強大的。

波特率計算公式:
poYBAGKweseAcfKiAACymDWu5ME019.jpg


代碼實操:
新建兩個文件,sci.c和sci.h
poYBAGKwe2OAMjW_AACEqWzwnyM468.jpg


與sci相關的代碼全部放在sci.c文件里面,sci.h用于sci相關的函數的聲明。

1、sci模塊硬件初始化:


  1. /******************************************************************
  2. *函數名:Scia_Config(uint32 baud)
  3. *參 數: baud,串口波特率
  4. *返回值:無
  5. *作 用: SCIA 初始化配置
  6. ******************************************************************/
  7. void Scia_Config(uint32 baud)
  8. {
  9. uint32 div = 0;
  10. uint32 divsel = 0;
  11. uint32 lospcp = 0;
  12. uint32 lspclk = 0;
  13. uint16 brr = 0;
  14. //獲取系統時鐘的倍頻、分頻和低速外部時鐘的值
  15. div = SysCtrlRegs.PLLCR.bit.DIV;
  16. divsel = SysCtrlRegs.PLLSTS.bit.DIVSEL;
  17. lospcp = SysCtrlRegs.LOSPCP.bit.LSPCLK;
  18. if (lospcp != 0)
  19. {
  20. lospcp = lospcp * 2;
  21. }
  22. else
  23. {
  24. lospcp = 1;
  25. }
  26. /*分頻值設置
  27. divsel為 0時,系統時鐘4分頻
  28. divsel為 1時,系統時鐘4分頻
  29. divsel為 2時,系統時鐘2分頻
  30. divsel為 3時,系統時鐘1分頻*/
  31. switch (divsel)
  32. {
  33. case 0:
  34. case 1:
  35. lspclk = 12000000 * div / 4 / lospcp;
  36. break;
  37. case 2:
  38. lspclk = 12000000 * div / 2 / lospcp;
  39. break;
  40. case 3:
  41. lspclk = 12000000 * div / 1 / lospcp;
  42. break;
  43. }
  44. brr = lspclk / (baud * 8) - 1;
  45. /*SCI 停止位設置 0:一個停止位 1:兩個停止位*/
  46. SciaRegs.SCICCR.bit.STOPBITS = 0;
  47. /*SCI 奇偶校驗位 0:奇偶校驗 1:偶偶校驗*/
  48. SciaRegs.SCICCR.bit.PARITY = 0;
  49. /*SCI 奇偶校驗使能 0:關閉 1:啟用*/
  50. SciaRegs.SCICCR.bit.PARITYENA = 0;
  51. /*SCI 字符長度 0:1個字長1:2個字長 ... 7:8個字長*/
  52. SciaRegs.SCICCR.bit.SCICHAR = 7;
  53. /*使能SCI的發送機和接收機*/
  54. SciaRegs.SCICTL1.bit.TXENA = 1;
  55. SciaRegs.SCICTL1.bit.RXENA = 1;
  56. /*SCI 16位波特率選擇寄存器 高8位*/
  57. SciaRegs.SCIHBAUD = (uint8) ((brr >> 8) & 0xff);
  58. /*SCI 16位波特率選擇寄存器 低8位*/
  59. SciaRegs.SCILBAUD = (uint8) (brr & 0xff);
  60. /*SCI 發送中斷使能*/
  61. SciaRegs.SCICTL2.bit.TXINTENA = 1;
  62. /*SCI 接收中斷使能*/
  63. SciaRegs.SCICTL2.bit.RXBKINTENA = 1;
  64. /*SCI 指定發送和接收中斷處理函數,該寄存器受EALLOW保護*/
  65. EALLOW;
  66. PieVectTable.SCIRXINTA = &sciaRxIsr;
  67. PieVectTable.SCITXINTA = &sciaTxIsr;
  68. EDIS;
  69. /*PIE Group 9, SCIRXINTA*/
  70. PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
  71. /*PIE Group 9, SCITXINTA*/
  72. PieCtrlRegs.PIEIER9.bit.INTx2 = 1;
  73. IER_ENABLE(M_INT9);
  74. /*SCI 軟件復位,重新啟動SCI*/
  75. SciaRegs.SCICTL1.bit.SWRESET = 1;
  76. }
復制代碼


2、中斷方式的數據發送


  1. /******************************************************************
  2. *函數名:Scia_Send(uint8 data)
  3. *參 數: data,準備發送的字節
  4. *返回值:無
  5. *作 用: SCIA 發送一個字節
  6. ******************************************************************/
  7. void Scia_Send(uint8 data)
  8. {
  9. while (SciaRegs.SCICTL2.bit.TXRDY == 0)
  10. {
  11. }
  12. SciaRegs.SCITXBUF = data;
  13. }
復制代碼


3、字符串的發送


  1. /******************************************************************
  2. *函數名:Scia_Print(char *str)
  3. *參 數: *str,要發送的字符串
  4. *返回值:無
  5. *作 用: SCIA 發送一個字符串
  6. ******************************************************************/
  7. void Scia_Print(char *str)
  8. {
  9. while (*str != '')
  10. {
  11. while (SciaRegs.SCICTL2.bit.TXRDY == 0)
  12. {
  13. }
  14. SciaRegs.SCITXBUF = *str++;
  15. }
  16. }
復制代碼


4、發送與接收中斷函數


  1. /******************************************************************
  2. *函數名:sciaTxIsr(void)
  3. *參 數: 無
  4. *返回值:無
  5. *作 用: SCIA中斷發送處理
  6. ******************************************************************/
  7. INTERRUPT void sciaTxIsr(void)
  8. {
  9. /*清除中斷標志位*/
  10. while (SciaRegs.SCICTL2.bit.TXRDY == 0)
  11. {
  12. }
  13. PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
  14. }
  15. /******************************************************************
  16. *函數名:sciaRxIsr(void)
  17. *參 數: 無
  18. *返回值:無
  19. *作 用: SCIA中斷接收處理
  20. ******************************************************************/
  21. INTERRUPT void sciaRxIsr(void)
  22. {
  23. if (SciaRegs.SCICTL2.bit.TXRDY == 1)
  24. {
  25. Scia_Send(SciaRegs.SCIRXBUF.bit.RXDT);
  26. PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
  27. }
  28. }
復制代碼


5、主函數
在上一篇GPIO發布的基礎上增加sci功能,實現數據的收發,同時,led和按鍵功能也正常工作。


  1. int main(void)
  2. {
  3. uint16_t cnt = 0;
  4. /*初始化系統控制:PLL,WatchDog,使能外設時鐘*/
  5. InitSysCtrl();
  6. /*初始化內存控制寄存器,使能內存流水線模式*/
  7. InitFlash();
  8. /*初始化串口通信的GPIO口*/
  9. /*GPIO28: SCIRXDA*/
  10. /*GPIO29: SCITXDA*/
  11. InitSciGpio();
  12. /*關閉中斷*/
  13. DINT;
  14. /*將PIE控制寄存器初始化為默認狀態,該狀態禁止所有PIE中斷并清除所有標志*/
  15. InitPieCtrl();
  16. /*禁止CPU中斷并清除所有中斷標志*/
  17. IER = 0x0000;
  18. IFR = 0x0000;
  19. /*初始化PIE向量表,為PIE向量表中的所有中斷向量配置對應向量的入口地址*/
  20. InitPieVectTable();
  21. /*SCI寄存器配置*/
  22. Scia_Config(9600);
  23. /*使能外部中斷和CPU中斷*/
  24. EINT;
  25. /*初始化KEY、LED*/
  26. InitKEY();
  27. InitLED();
  28. /*通過SCI發送字符串*/
  29. Scia_Print("Hello haawking!rn");
  30. while(1)
  31. {
  32. /*按鍵按下*/
  33. if(GpioDataRegs.GPADAT.bit.GPIO12 == 0)
  34. {
  35. /*D400亮*/
  36. GpioDataRegs.GPACLEAR.bit.GPIO7 = 1;
  37. }
  38. else
  39. {
  40. /*松開按鍵D400滅*/
  41. GpioDataRegs.GPASET.bit.GPIO7 = 1;
  42. }
  43. if(cnt == 500)
  44. {
  45. cnt = 0;
  46. /*D401一直閃爍*/
  47. GpioDataRegs.GPATOGGLE.bit.GPIO6 = 1;
  48. }
  49. else
  50. {
  51. cnt++;
  52. DELAY_US(1000);
  53. }
  54. }
  55. return 0;
  56. }
復制代碼


測試

poYBAGKwfUiAdZZhAABQ8zCgFcs967.jpg


測試成功

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

    關注

    5

    文章

    80

    瀏覽量

    5154
  • 開發板試用
    +關注

    關注

    3

    文章

    301

    瀏覽量

    2092
收藏 人收藏

    評論

    相關推薦

    【RA-Eco-RA4E2-64PIN-V1.0開發板試用】02、UART串口通信

    調試信息。 所以,為了方便后續調試,在這一節中,學習使用FSP庫進行UART串口通信。 1 硬件部分 從RA-Eco-RA4E2-64PIN-V1.0開發板的原理圖可以知道,這塊板子使用CH340N
    發表于 12-14 11:44

    微主板/開發板Linux系統播放音頻方法,觸覺智能RK3562開發板演示

    本文介紹瑞微方案主板/開發板Linux系統播放音頻的方法,觸覺智能RK3562開發板演示,通用RK3566、RK3568、RK3588等
    的頭像 發表于 12-13 11:40 ?180次閱讀
    瑞<b class='flag-5'>芯</b>微主板/<b class='flag-5'>開發板</b>Linux系統播放音頻方法,觸覺智能RK3562<b class='flag-5'>開發板</b>演示

    追加名額丨米爾瑞微RK3576開發板有獎試用

    米爾與瑞微合作發布的新品基于瑞微RK3576應用處理器的MYD-LR3576開發板免費試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576
    的頭像 發表于 11-22 01:00 ?166次閱讀
    追加名額丨米爾瑞<b class='flag-5'>芯</b>微RK3576<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    【迅為】瑞微RK3588開發板RK3568開發板區別及優勢

    RK3568開發板
    的頭像 發表于 11-18 14:19 ?345次閱讀
    【迅為】瑞<b class='flag-5'>芯</b>微RK3588<b class='flag-5'>開發板</b>RK3568<b class='flag-5'>開發板</b>區別及優勢

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux
    的頭像 發表于 11-16 01:02 ?220次閱讀
    【RA8D1<b class='flag-5'>試用</b>活動】RA8D1B-CPKCOR<b class='flag-5'>開發板</b>移植linux

    有獎丨米爾 瑞微RK3576開發板免費試用

    米爾與瑞微合作發布的新品基于瑞微RK3576應用處理器的MYD-LR3576開發板免費試用活動來啦~~米爾提供了7塊價值849元的MYD-LR3576
    的頭像 發表于 11-12 01:00 ?300次閱讀
    有獎丨米爾 瑞<b class='flag-5'>芯</b>微RK3576<b class='flag-5'>開發板</b>免費<b class='flag-5'>試用</b>

    有獎試用!!RA-Eco-RA4E2-64PIN-V1.0開發板試用活動開始報名

    有獎試用!!RA-Eco-RA4E2-64PIN-V1.0開發板試用活動開始報名
    的頭像 發表于 11-09 01:02 ?236次閱讀
    有獎<b class='flag-5'>試用</b>!!RA-Eco-RA4E2-64PIN-V1.0<b class='flag-5'>開發板</b><b class='flag-5'>試用</b>活動開始報名

    【RA-Eco-RA2E1-48PIN-V1.0開發板試用】開箱點燈

    【RA-Eco-RA2E1-48PIN-V1.0開發板試用】開箱點燈 0. 寫在前面 在此,衷心感謝電子發燒友平臺和瑞薩提供的免費試用名額,讓我有機會體驗和評估
    發表于 10-26 22:47

    在NXP源碼基礎上如何適配ELF 1開發板UART功能

    UART即通用異步收發器,是一種支持全雙工串行通信協議的接口。在i.MX6ULL處理器平臺上,該處理器原生支持多達8路的UART接口,提供了豐富的串行通信能力。 針對ELF 1開發板,實際引出了4路
    的頭像 發表于 09-29 11:49 ?338次閱讀
    在NXP源碼基礎上如何適配ELF 1<b class='flag-5'>開發板</b>的<b class='flag-5'>UART</b>功能

    ElfBoard技術貼|如何在NXP源碼基礎上適配ELF 1開發板UART功能

    UART即通用異步收發器,是一種支持全雙工串行通信協議的接口。在i.MX6ULL處理器平臺上,該處理器原生支持多達8路的UART接口,提供了豐富的串行通信能力。 針對ELF 1開發板,實際引出
    的頭像 發表于 09-25 13:56 ?2297次閱讀
    ElfBoard技術貼|如何在NXP源碼基礎上適配ELF 1<b class='flag-5'>開發板</b>的<b class='flag-5'>UART</b>功能

    喜報!中科榮獲國家級專精特新“小巨人”企業稱號

    喜訊!近日,國家工業和信息化部門正式揭曉了第六批國家專精特新“小巨人”企業名單,中科憑借卓越的技術實力和創新能力,榮獲了專精特新“小巨人”企業殊榮。這一榮譽不僅是對中科
    的頭像 發表于 09-14 08:00 ?658次閱讀
    喜報!<b class='flag-5'>中科</b><b class='flag-5'>昊</b><b class='flag-5'>芯</b>榮獲國家級專精特新“小巨人”企業稱號

    點擊參與米爾NXP i.MX 93開發板有獎試用

    米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了3塊價值678元的MYD-LMX9X開發板發起試用活動您不僅可以免費體
    的頭像 發表于 06-13 08:02 ?523次閱讀
    點擊參與米爾NXP i.MX 93<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    免費!NXP i.MX 93開發板有獎試用

    米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了2塊價值678
    的頭像 發表于 05-23 08:01 ?722次閱讀
    免費!NXP i.MX 93<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    fpga開發板與linux開發板區別

    FPGA開發板與Linux開發板是兩種不同的硬件開發平臺,各自具有不同的特點和應用場景。在以下的文章中,我將詳細介紹FPGA開發板和Linux開發板
    的頭像 發表于 02-01 17:09 ?2230次閱讀

    使用愛派Pro開發板部署人體姿態估計模型

    在經過之前對于開發板的使用,以及通過幾個愛派官方給出的示例demo(mobilenet/yolov5)在開發板上的部署之后,筆者也逐漸了解了愛派這塊
    的頭像 發表于 01-09 09:50 ?1412次閱讀
    使用愛<b class='flag-5'>芯</b>派Pro<b class='flag-5'>開發板</b>部署人體姿態估計模型
    主站蜘蛛池模板: 日久精品不卡一区二区| 公开超碰在线视频| 欧美内射AAAAAAXXXXX| 成年人视频在线免费播放| 神马影院午夜伦理限级| 黑人巨大交牲老太| 中文字幕专区高清在线观看| 欧美性色xo影院69| 日本双渗透| 国产午夜小视频| 8x8x我要打机飞在线观看| 热热久久这里只有精品| 国产一浮力影院| 97色伦图区97色伦综合图区| 四虎视频最新视频在线观看| 九九这里有精品| 99久久热视频只有精品| 无人区日本电影在线观看高清| 国产成人综合高清在线观看| 亚洲中文字幕一二三四区苍井空| 欧美人成人亚洲专区中文字幕| 国产露脸A片国语露对白| 无码专区久久综合久综合字幕| 久久国内精品视频| 成人在线不卡视频| 亚洲综合网国产精品一区| 欧美一区二区视频高清专区| 国内精品乱码卡一卡2卡三卡新区| 91精品福利一区二区| 性与肉体电影免费观看| 免费观看国产视频| 国产美女裸身网站免费观看视频| 自慰弄湿白丝袜| 日日日操操操| 久久日本精品在线热| 国产超碰AV人人做人人爽| 总裁呻吟双腿大开男男H| 为什么丈夫插我我却喜欢被打着插| 老司机亚洲精品影院在线观看| 国产黄a三级三级三级| 2019天天射干网站|