刚去健身房锻炼回来,一路都是烧纸,菩萨保佑,我一定好好学习。
今晚我们的主题是编写SCI基本驱动程序。
来来来,直接说了,今晚我们还是采用非中断回环模式,其实程序还是比较简单的,我先说下思路:
1、系统复位;
2、设置数据格式,包括停止位、奇偶校验位、回环测试模式、空闲线/地址为模式、字符串长度;
3、使能发送和接收;
4、设置波特率;
5、相关引脚设置;
6、编写发送子程序和接收子程序;
其实对应程序,只用到了几个寄存器,我们还是一起来看下.
首先是配置寄存器:
这个配置寄存器每一位我们都需要去设置,也就是我们刚才说的第二点;
然后是控制寄存器1:
这个寄存器里面设置发送接收使能和复位;
接着是波特率寄存器:
波特率就是按照计算公式,根据需要生成的波特率,自己算一下寄存器的取值;
下面是控制寄存器2:
主要是TXRDY位,发送准备位;
再下面是接收状态寄存器:
这里需要注意的也是接收准备位RXRDY;
最后需要注意的是发送寄存器和接收寄存器位宽不同
其中发送寄存器是8位宽的:
而接收状态寄存器是16位宽的:
好了,到这里寄存器相关需要注意的位也讲完了,现在开始写程序了。
程序比较简单,我刚刚去验证了,直接复制粘贴了
首先是DSP2802x_Sci.c文件
// TI File $Revision: /main/1 $
// Checkin $Date: August 14, 2008 16:58:46 $
//###########################################################################
//
// FILE: DSP2802x_Sci.c
//
// TITLE: DSP2802x SCI Initialization & Support Functions.
//
//###########################################################################
// $TI Release: f2802x Support Library v200 $
// $Release Date: Tue Jul 24 10:01:39 CDT 2012 $
//###########################################################################
#include "F2802x_Device.h" // Headerfile Include File
#include "F2802x_Examples.h" // Examples Include File
//---------------------------------------------------------------------------
// InitSci:
//---------------------------------------------------------------------------
// This function initializes the SCI(s) to a known state.
//
void InitSci(void)
{
EALLOW;
SciaRegs.SCICCR.bit