目录
1.背景
在28377d中串口(uart)被称为sci(此sci非彼sci) 老实说串口作为应用最广泛的通信协议之一现在基本的大厂开发的非常完善且易于上手。在这片芯片上也是,下面我就以最简单的效果来作个抛砖引玉吧。虽然c2000系列已经被TI开除了DSP籍,但是c2000在计算方面依然有其他芯片无可匹敌的效果,所以我不推荐各位在这上面开发协议而浪费时间,不然还不如用ST或NXP的芯片协议,那不比c2000全?在这上面开发完全是因为与周边器件进行简单通信,比如屏幕简单显示个数据之类的。
2.基本知识
关于串口的通信过程,停止位,波特率之类的我相信没有人用到28377了还不知道吧,这里我就不过多解释了(如有不懂建议先学STM32)这里我用的是SCIA,波特率:115200,作简单的发送任务。
3.程序
void init_uart1(unsigned long int baudate1)
{
GPIO_setPinConfig(GPIO_28_SCIRXDA);
GPIO_setPadConfig(28, GPIO_PIN_TYPE_STD | GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode(28, GPIO_QUAL_ASYNC);
GPIO_setPinConfig(GPIO_29_SCITXDA);
GPIO_setPadConfig(29, GPIO_PIN_TYPE_STD | GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode(29, GPIO_QUAL_ASYNC);
SCI_clearInterruptStatus(SCIA_BASE, SCI_INT_RXFF | SCI_INT_TXFF | SCI_INT_FE | SCI_INT_OE | SCI_INT_PE | SCI_INT_RXERR | SCI_INT_RXRDY_BRKDT | SCI_INT_TXRDY);
SCI_clearOverflowStatus(SCIA_BASE);
SCI_disableFIFO(SCIA_BASE);
SCI_resetChannels(SCIA_BASE);
//波特率:baudate1,SCI_CONFIG_WLEN_8:8位数据,SCI_CONFIG_STOP_ONE:停止位1位
SCI_setConfig(SCIA_BASE, DEVICE_LSPCLK_FREQ, baudate1, (SCI_CONFIG_WLEN_8|SCI_CONFIG_STOP_ONE|SCI_CONFIG_PAR_NONE));
SCI_disableLoopback(SCIA_BASE);
SCI_performSoftwareReset(SCIA_BASE);
SCI_enableModule(SCIA_BASE);
}
程序比较简单,上半部分是GPIO的初始化,下半部分是串口的初始化,大家基本上看一眼都知道设置是怎么搞的了,TI的程序写的也是非常清楚了
SCI_writeCharNonBlocking(SCIA_BASE, sendChar);
这个函数是TI开发的发送一个字节的函数其中SCIA_BASE是串口号,sendChar是你要发送的内容
void main(void)
{
init_CPU1(); //初始化CPU1
// CLA_init(); //初始化CLA1
//
// initCPUTimer0(100000); //初始化timer0
// initCPUTimer1(200000); //初始化timer1
// initCPUTimer2(100); //初始化timer2
//
// EPWM_init(); //初始化EPWM模块
// initEPWM1(); //初始化EPWM1
// initEPWM_for_dac(EPWM8_BASE); //初始化EPWM8给DACA
//
// initDMA6_DAC(); //初始化DMA6给DAC
// initADC1(); //初始化ADC1
// start_epwm12_adc1(); //初始化EPWM12给adc1
// initDACA(); //初始化DACA
// initDACC(); //初始化DACC
//
init_uart1(115200); //初始化串口1
// initI2C1(); //初始化IIC1
// init_spi1(); //初始化SPI1
// Init_LEDV3(); //初始化LEDV3管脚
//
ENINT; //启用全局中断和实时中断
// OLED4_Init(); //4针IIC的oled初始化
// CLA_runTest(1); //启动CLA任务1
// CLA_runTest(2);
// ESTOP0; //软件断点
//
// for(fftmov=0;fftmov<520;fftmov++)
// {
// fftout[fftmov]=fabsf(IOBuffer[fftmov]);
// __asm(" NOP");
// }
// ESTOP0; //软件断点
while(1)
{
// SPI_writeDataNonBlocking(SPIA_BASE, 257);
SCI_writeCharNonBlocking(SCIA_BASE, 1);
;
}
}
这里作个演示,我就直接在主循环里一直发送1了。
4.结果
嗯,一切正常