【摘要】:Neuron芯片提供的串行I/O对象有Shift I/O对象、I2CI/O对象、Magcard输入对象、Magtrack 1输入对象、串行I/O对象、Dallas Touch I/O对象、Wiegand输入对象和Neurowire I/O对象等。该I/O对象类型用于使用异步串行数据格式传输数据,如RS-232通信。输入串行I/O对象将等待被接收的数据帧的开始位,直到已经等待了接收20个字符所需要的时间才结束。输入串行I/O对象将在收到无效停止位或奇偶校验位时停止接收数据。3)io-object-name:由用户为该I/O对象指定的名字,是ANSI C格式的变量标识符。
Neuron芯片提供的串行I/O对象有Shift I/O对象、I2CI/O对象、Magcard输入对象、Magtrack 1输入对象、串行I/O对象、Dallas Touch I/O对象、Wiegand输入对象和Neurowire I/O对象等。下面仅介绍串行I/O对象。
在半双工异步串行(Serial)输入/输出对象中,Neuron芯片的IO8引脚可配置为异步串行数据输入线,IO10引脚可配置为异步串行数据输出线,如图5-24所示。该I/O对象类型用于使用异步串行数据格式传输数据,如RS-232通信。传输的格式为1个开始位、8个数据位(最低有效位在前),后面再跟1个停止位。输入串行I/O对象将等待被接收的数据帧的开始位,直到已经等待了接收20个字符所需要的时间才结束。如果在这段时间内没有输入发生,则返回0。当已收到全部的字节数或已超过接收20个字符所需要的时间但仍未接收到数据时,输入终止。输入串行I/O对象将在收到无效停止位或奇偶校验位时停止接收数据。在以2400 bit/s的速率传输数据时,输入超时时间为83ms。
图5-24 Serial I/O对象
a)串行I/O引脚配置 b)串行输入定时图 c)串行输出定时图
当使用具有不同的比特率的多路复用串行I/O设备时,必须使用编译指令“#pragma enable_multiple_baud”。该编译指令必须在使用I/O函数(如io_in()、io_out())之前出现。
对于串行输入/输出,io_in()和io_out()要求一个指向作为input_value和output_value的数据缓冲区的指针。io_in()函数返回包含接收的实际字节数的unsigned short int类型。
对串行输入/输出对象进行显式配置的Neuron C语句和说明如下:(www.chuimin.cn)
pin input serial[baud(const-expr)]io-object-name;
pin output serial[baud(const-expr)]io-object-name;
1)pin:指定一个Neuron芯片I/O引脚。串行输入要求使用一个引脚,并且必须是IO8;串行输出也要求使用一个引脚,并且必须是IO10。
2)baud(const-expr):指定比特率。表达式const-expr可以为600 bit/s、1200 bit/s、2400 bit/s或4800 bit/s。对于10 MHz的输入时钟频率,默认为2400 bit/s。比特率与其Neu-ron芯片输入时钟频率成正比。
3)io-object-name:由用户为该I/O对象指定的名字,是ANSI C格式的变量标识符。
用法:
相关推荐