ARM处理器设计的电机电物理量采集系统
1)AD数据采集.A/D转换的数据可以通过中断或查询的方式来访问,如果是用中断方式,全部的转换时间(从A/D转换的开始到数据读出)要更长,因为中断服务程序返回和数据的访问的原因,所以采用查询方式不断检测ADCCONt3j(转换结束标志位)来确定从ADCDAT寄存器读取的数据是否是最新的转换数据.
主要代码有:
#define PRSCVL(206)
#define ADCCON
_
ENABLE_ START(Ox1)
#define STDBM (0x02)
#define PRSCEN(0xll41
void init
_ ADdevice0 //AD设备初始化
{
rADCCON=(PRSCVLlADCCON_ENABLE_STARTISTDBMIPRSCEN);
)
int GetADresuh(int channe1)
{
rADCCON=ADCCON
— ENABLE— START—BYREADI(channel3)IPRSCENIPRSCVL;
while(!frADCCONADCCON—FLAG)); //AD转换结束
return f0x3ffrADCDATO); //返回采样值
}
2)数据发送.异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送.数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行.接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符.为了恢复发送的信息,双方必须协调工作.在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差。因此实现较容易.主要代码有:
int Uart_
Init(int whichUart,int baud)
{
if(whichUaxt>=NumberOfUartDrv)
return FALSE;
return serial_
drv[whichUart]->init(baud);
}
int Uart_ SendByte(int whichUart,int data)
{
if(whichUart>=NumberOfUartDrv)
return FALS E;
return serial— .drv[whichUart]->write(data);
评论