1. 程式人生 > >DSP28335串列埠使用(查詢發,中斷收)

DSP28335串列埠使用(查詢發,中斷收)


//串列埠BGPIO初始化
void InitSciB()
{
    EALLOW;
    GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0;  // Enable pull-up for GPIO62 (SCITXDB)
    GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0;    // Enable pull-up for GPIO63 (SCIRXDB)
   GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3;  // Asynch input GPIO19 (SCITXDB)
    GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3;  // Asynch input GPIO23 (SCIRXDB)
    GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2;   // Configure GPIO19 for SCITXDB operation
    GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2;   // Configure GPIO23 for SCIRXDB operation
    EDIS;


    ScibRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback,No parity,8 char bits,async mode, idle-line protoco
    ScibRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,
                                       // Disable RX ERR, SLEEP, TXWAKE
    ScibRegs.SCICTL2.all =0x0003;  //接收中斷使能
    ScibRegs.SCICTL2.bit.RXBKINTENA =1;
    #if (CPU_FRQ_150MHZ)
      #if(BUADRATE_9600)      //設定波特率
    ScibRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 37.5MHz.
    ScibRegs.SCILBAUD    =0x00E7;
      #endif
       #if(BUADRATE_115200)
    ScibRegs.SCIHBAUD    =0x0000;  // 115200 baud @LSPCLK = 37.5MHz.
        ScibRegs.SCILBAUD    =0x0028;
       #endif
    #endif
    #if (CPU_FRQ_100MHZ)
        ScibRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 20MHz.
        ScibRegs.SCILBAUD    =0x0044;
    #endif
   // ScibRegs.SCIFFTX.all=0xC000;  //FIFO功能使能
    ScibRegs.SCIFFRX.all=0x0021;  //接收FIFO的深度為最低的5位,此處設定為1,沒接受到一個字元都會產生接收中斷
   // ScibRegs.SCIFFCT.all=0x00;
    ScibRegs.SCICTL1.all =0x0023;  // Relinquish SCI from Reset
    //ScibRegs.SCIFFRX.bit.RXFIFORESET=1;  //復位接收FIFO
}


// Transmit a character from the SCI
void put_char(char a)
{
    while (ScibRegs.SCICTL2.bit.TXRDY == 0);
    ScibRegs.SCITXBUF=a;
}


void put_string(char * putchar)
{
    while(*putchar!= 0x00)
    {
    put_char(*putchar++);
    }
}

//串列埠B接收中斷
interrupt void SciB_RxInterIsr(void)
{
    u8 res;
    res = (ScibRegs.SCIRXBUF.all) & 0x00FF;
   // put_char(res);
    switch(res)
    {
    case '0':  put_char('I'); break;
    case '1':  put_char(' '); break;
    case '2':  put_char('l'); break;
    case '3':  put_char('O'); break;
    case '4':  put_char('V'); break;
    case '5':  put_char('E'); break;
    case '6':  put_char(' '); break;
    case '7':  put_char('Y'); break;
    case '8':  put_char('O'); break;
    case '9':  put_char('U'); break;
    default :  break;
    }
ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1;  // Clear Overflow flag
ScibRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;

相關推薦

DSP28335串列使用(查詢中斷)

//串列埠BGPIO初始化 void InitSciB() {     EALLOW;     GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0;  // Enable pull-up for GPIO62 (SCITXDB)     GpioCtrlRegs.GPAPUD.bit.GP

在linux上寫好串列程式後利用windows上的串列除錯助手互資料

我是用QT4在Linux上寫的串列埠程式,具體的程式碼就不寫了,網上搜一下很多。這裡主要說一下寫完程式碼之後,之前也行。要做的事情。 1,使用命令在終端上檢視有哪些串列埠驅動。 可以看出ttyS0 ttyS1能用 .一般ttyS0指com1,ttyS1指co

解決Linux串列查詢一次只能返回8位的問題

問題描述: 專案中有定時查詢感測器並將查詢到的資料記錄下來的需要,在做的時候發現通過whlie迴圈配合select監測串列埠上的資料,然後將資料儲存在陣列的過程中,read函式的第三個引數即選擇讀取的位元組數,在大於8的情況下返回的個數仍然為8,而感測器返回的資料包一般都是十幾位,無法一

[轉]web串列除錯助手瀏覽器控制串列裝置

本文轉自:https://blog.csdn.net/ldevs/article/details/39664697 開啟串列埠時查詢可用串列埠供選擇   通過javascript呼叫activex控制串列埠收發資料,可以通過輪詢每個串列埠狀態找到指定的裝置,簡化使用者操作 選擇並開啟串列埠

串列通訊中解決serialport.DataReceived接收到的資料不完整

private SerialPort serialport = new SerialPort(); private StringBuilder builder = new StringBuilder(); // private String

STM32F10在iap和app模式下除錯模式串列可以通訊下載後卻不能通訊的問題

開發環境:iar for arm ,開發晶片是STM32F103, 問題點:在除錯模式下,usart1可以接受和傳送資料,但是下載到晶片內部時,或者使用iap升級之後就出現資料無法接受的問題。 第一就像想到的啟動檔案和中斷向量表沒有配置好: 如圖所示:ICF配置 對比之

Linux/Android系統開發 串列驅動原始碼FIFO模式

該驅動適用於採用linux和android系統平臺的C/C++串列埠開發。 FIFO傳送模式:建立資料傳送FIFO佇列,在多工資料傳送情境下,既能保證資料傳送任務能夠得到執行,又可解決資料傳送衝突問題。 select接收資料:有效監聽串列埠接收資料,提高執行效率,減少出錯

ubuntu中繫結USB串列的方法包括同一型號的USB串列

udev是通過核心產生裝置名增加別名的方式來達到 不管裝置連線的順序而維持一個統一的裝置名。核心通常會產生自定義的裝置名,如sda1、sdb1等,但是udev可以通過裝置的其他資訊如匯流排 ,生產商等不同來區分不同的硬體裝置。在/etc的 目錄下。 例如 :ubuntu核心中,產生sda 裝置名

QT第三方串列類Win_QextSerialPort串列工具插拔後無法繼續使用問題

if(myCom!=NULL){ myCom->close(); myCom->setParent(NULL); delete myCom; myCom=NULL; } myCom =

安卓通過串列獲得資料步驟

1、複製jni資料夾 2、複製lib資料夾 3、複製android_serialport_api 資料夾 4、修改 manifest檔案 <application  android:name="android_serialport_api.sample.Appli

Qt--串列接收資料自定義碼流

串列埠通訊,傳送的資料沒有打包成固定碼流,所有需要對接收的資料加以判斷。 解決串列埠接收不完整的方法有3種: 一:判斷接收的資料,是不是自己定義的字元格式。 二:判斷接收的資料包大小,是不是自己定義的資料包的大小。 三:以多執行緒的方式,執行緒一直接收,資料獨立處理,此方法

VS 串列通訊SerialPort官方demo

網上有很多解決方案: 主流大概三種: 1、使用mscomm控制元件,是微軟以前提供的控制元件,現在已經放棄了。當然在vs中可以手動整合這個控制元件,也能使用,但是需要註冊。 2、自己程式設計實現串列埠通訊(這個以後有時間寫個部落格) 3、使用.net framework 中

一個串列通訊程式適用於3g模組傳送簡單AT指令

原始碼如下: #include <stdio.h> #include <string.h> #include <sys/types.h> #include <errno.h> #include <sys

MATLAB利用串列接收資料並實時顯示圖形

matlab讀取串列埠資源總結:一、matlab讀取串列埠資料,並顯示實時圖形:點選這裡開啟二、使用matlab進行串列埠除錯的2中方法:點這裡開啟三、matlab讀取微控制器串列埠資料並顯示出來(m語

STM32F407 串列程式設計USART1USART2USART3UART4

串列埠設定的一般步驟可以總結為如下幾個步驟:  1)  串列埠時鐘使能,GPIO時鐘使能。  2)  設定引腳複用器對映:呼叫GPIO_PinAFConfig函式。  3)  GPIO初始化設定:要設定模式為複用功能。  4)  串列埠引數初始化:設定波特率,字長,奇偶校驗

在嵌入式linux串列終端中如何燒錄核心和上傳檔案?

開發嵌入式linux遇到一些沒有u盤或者網口的時候,怎麼更新核心?更新應用程式? 映像上傳 採用串列埠xmodem協議上傳,串列埠波特率為460800。開發板這裡首先要連線secureCRT,在c

利用STM32 的串列送和接收資料實驗

void uart_init(u32 bound){ //GPIO埠設定 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_Init

串列控制kobuki 繞過ROS系統

介紹: 下面所做的事情, 用串列埠來控制kobuki底座運動, 繞過ros系統, 首先測試一下串列埠命令是否可用 硬體裝置 kobuki: turtlebot的底座:kobuki usb連線: 用usb線將kobuki和電腦連線起來, 不是25針的介

web串列除錯助手瀏覽器控制串列裝置

開啟串列埠時查詢可用串列埠供選擇 通過javascript呼叫activex控制串列埠收發資料,可以通過輪詢每個串列埠狀態找到指定的裝置,簡化使用者操作 選擇並開啟串列埠 function selcomport(){ if ($("#btnOpen").val() ==

ubuntn下串列工具minicom kermit的使用

     串列埠是嵌入式開發使用最多的通訊方式,linux系統提供了一個串列埠工具minicom,可以完成複雜的串列埠通訊工作。 Ubuntu下也有這樣的串列埠通訊工具,比如Minicom,kermit。minicom比較通用,kermit比較好用。    1.minicom