坛子里做活动,大手笔,要送示波器。
今天刚从x宝收到一个USBee,和谐货,做些小的玩意儿足够了。
果断晒出来。
各种花花绿绿的杜邦线,各种眼花,还好每条线上都有标签。
话说这货软件功能还真不少啊,如果测量数据准确的话,做些小设计还是够了的。
不废话,开始做小测试,在LM4F平台上执行一个简单的延时(玩μTenux的时候用操作系统时间打印验证过,基本能用的延时函数)
#define Fclk 13000000
void delay_ms(unsigned long t )
{
unsigned long int i;
unsigned long int j;
j=Fclk/1000 * t;
for(i = 0; i < j; i++);
}
void delay_us(unsigned long int t)
{
unsigned long int i;
unsigned long int j;
j=Fclk/1000000 * t;
for(i = 0; i < j; i++);
}
测试函数:
while(1)
{GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_PIN_4);
delay_us();或者delay_ms();
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_4, 0);
delay_us();或者delay_ms();
}
从代码来看
理论上应该出现PF4端口产生一个周期信号,周期为2倍()里面的数值。
看看示波器的显示,这货的示波器带宽只有3M。
先试试delay_us(1)
好家伙,2us周期的波形,勉强能达到电平要求,几乎全是上升下降时间。是LM4F输出信号频率的极限了吗?
示波器测试结果,周期为2.69us,误差比较大,毕竟是用c写的延时,MDK编译后,结果估计只能这样了,不知道其他编译平台会不会好些。
电平3.4v,算是TTL电平了吧。可能存在过冲现象,所以超过了3.3v。
来看看delay_us(10)
这个波形,明显看出有过冲。
输出周期为20.25us,看来delay_us()在几十个微秒的范围里面,还算是比较精确,不是变态的逻辑IC,基本上能满足时序要求了吧。
再上个delay_us(100)
显示周期195.75us,慢慢出现误差了,在几百us的范围内,粗略估计2.5%左右的误差吧。
看个delay_ms(1)的
周期1.95ms,还算正常。
delay_ms(10)的
显示周期19.5ms
delay_ms(100)的
显示195ms的周期,基本上误差率固定不变了。
这货的示波器功能还是挺不错的,起码粗略估算还是够用的,但是想更加精确,估计得上实体示波器了。
不过给LZ用也足够了。
再测测电压表功能。
测试代码:
拉高PF4,
while(1) {GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_PIN_4);}
太标准了,标准TTL电平啊。
拉低PF4
while(1) {GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_4, 0);}
擦,这是什么情况?怎么电压变成负值了?
难道是我眼花了?
还有一大堆功能,以后有机会用到再玩玩,嘿嘿。