创建准确定时的脉冲,并确保在各种系统和设备中的同步操作。
A
A
硬件概览
它是如何工作的?
One Shot Click基于Analog Devices的LTC6993-2,这是一种单稳态多谐振荡器(也称为“一次性”脉冲发生器),其可编程脉冲宽度范围为1μs到33.6秒。LTC6993-2属于TimerBlox®系列多功能硅定时设备。一个单独的电阻RSET用于编程内部主振荡器频率,设置LTC6993的时间基准。输出脉冲宽度由这个主振荡器和一个内部时钟分频器NDIV决定,NDIV可以编程为八个设置,从1到221。输出脉冲由触发输入(TRIG)上的转换触发。每个部分可以配置为生成正或负输出脉冲。LTC6993-2有四个版本,提供不同的触发信号极性和重新触发能力。此外,LTC6993-2还提供了通过引入到IC的SET引脚的
独立控制电压动态调整输出脉冲宽度的能力。一个简单的微调器或电位器可以用于此目的,但出于可靠性原因,One Shot Click上使用了AD5241数字电位器。AD5241是一种来自Analog Devices的256位数字电位器,具有低温度系数(30 ppm/°C)。AD5241通过标准I2C接口与微控制器通信,因此用户只需在AD5241寄存器中设置滑动器值即可轻松控制和精确计算输出脉冲宽度。One Shot Click还包含一个多圈微调器,其作为V+和GND之间的分压电阻连接到LTC6993-2的DIV引脚。DIV引脚是可编程分频器和极性输入。极性输入引脚电压内部转换为4位结果(DIVCODE)。DIVCODE的
MSB(POL)确定OUT引脚的极性。当POL = 0时,输出产生正脉冲。当POL = 1时,输出产生负脉冲。这样,用户可以通过设置微调器上的所需电压轻松设置输出脉冲宽度范围和极性。该Click还包含测试点,以方便用户访问参考电压。用户可以使用分离开关(SW1)将微调器与电路的其余部分分离,然后精确设置和测量所需电压,并将开关重新打开位置。该Click板™可以在3.3V或5V逻辑电压水平下工作,通过VCC SEL跳线选择。这种方式,3.3V和5V能力的MCU都可以正确使用通信线。此外,该Click板™配备了一个包含易于使用的功能和示例代码的库,可作为进一步开发的参考。
功能概述
开发板
Flip&Click PIC32MZ 是一款紧凑型开发板,设计为一套完整的解决方案,它将 Click 板™的灵活性带给您喜爱的微控制器,使其成为实现您想法的完美入门套件。它配备了一款板载 32 位 PIC32MZ 微控制器,Microchip 的 PIC32MZ2048EFH100,四个 mikroBUS™ 插槽用于 Click 板™连接,两个 USB 连接器,LED 指示灯,按钮,调试器/程序员连接器,以及两个与 Arduino-UNO 引脚兼容的头部。得益于创
新的制造技术,它允许您快速构建具有独特功能和特性的小工具。Flip&Click PIC32MZ 开发套件的每个部分都包含了使同一板块运行最高效的必要组件。此外,还可以选择 Flip&Click PIC32MZ 的编程方式,使用 chipKIT 引导程序(Arduino 风格的开发环境)或我们的 USB HID 引导程序,使用 mikroC、mikroBasic 和 mikroPascal for PIC32。该套件包括一个通过 USB 类型-C(USB-C)连接器的干净且调
节过的电源供应模块。所有 mikroBUS™ 本身支持的 通信方法都在这块板上,包括已经建立良好的 mikroBUS™ 插槽、用户可配置的按钮和 LED 指示灯。Flip&Click PIC32MZ 开发套件允许您在几分钟内创建新的应用程序。它由 Mikroe 软件工具原生支持,得益于大量不同的 Click 板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作的许多方面。
微控制器概述
MCU卡片 / MCU
建筑
PIC32
MCU 内存 (KB)
2048
硅供应商
Microchip
引脚数
100
RAM (字节)
524288
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图
一步一步来
项目组装
实时跟踪您的结果
通过调试模式的应用程序输出
1. 一旦代码示例加载完成,按下 "DEBUG" 按钮将启动构建过程,并将其编程到创建的设置上,然后进入调试模式。
2. 编程完成后,IDE 中将出现一个带有各种操作按钮的标题。点击绿色的 "PLAY" 按钮开始读取通过 Click board™ 获得的结果。获得的结果将在 "Application Output" 标签中显示。
软件支持
库描述
该库包含 One Shot Click 驱动程序的 API。
关键功能:
oneshot_get_resistance
- 此功能从AD5241芯片读取电阻数据oneshot_digital_read_rst
- 此功能读取RST引脚的数字信号oneshot_digital_write_cs
- 此功能向CS引脚写入指定的数字信号
开源
代码示例
这个示例可以在 NECTO Studio 中找到。欢迎下载代码,或者您也可以复制下面的代码。
/*!
* \file
* \brief OneShot Click example
*
* # Description
* This example shows the user how to configure and use the One Shot click. The click has a
* monostable monovibrator which cam generate a pulse of width between 1μs and 33.6 seconds.
*
* The demo application is composed of two sections :
*
* ## Application Init
* This function initializes and configures the logger and click modules. Resistance data,
* acquired from the AD5241, is displayed at the end of the initialization process.
*
* ## Application Task
* This function triggers one shot every 8 seconds.
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "oneshot.h"
// ------------------------------------------------------------------ VARIABLES
static oneshot_t oneshot;
static log_t logger;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( )
{
log_cfg_t log_cfg;
oneshot_cfg_t cfg;
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, "---- Application Init ----" );
// Click initialization.
oneshot_cfg_setup( &cfg );
ONESHOT_MAP_MIKROBUS( cfg, MIKROBUS_1 );
oneshot_init( &oneshot, &cfg );
Delay_100ms( );
oneshot_default_cfg( &oneshot );
Delay_100ms( );
log_printf( &logger, " * Resistance: %.1f Ohm\r\n", oneshot_get_resistance( &oneshot ) );
}
void application_task ( )
{
oneshot_digital_write_cs( &oneshot, 1 );
Delay_ms( 1 );
oneshot_digital_write_cs( &oneshot, 0 );
log_printf( &logger, " * One shot triggered \r\n" );
log_printf( &logger, " --------------------------- \r\n" );
Delay_ms( 8000 );
}
void main ( )
{
application_init( );
for ( ; ; )
{
application_task( );
}
}
// ------------------------------------------------------------------------ END