体验我们的解决方案带来的数据转换能力,无缝地将RS232总线数据转换为您选择的I2C或SPI串行接口。
A
A
硬件概览
它是如何工作的?
UART I2C/SPI Click基于NXP的SC16IS740,这是一款I2C/SPI到UART接口芯片,具有64字节的发送和接收FIFO以及内置的IrDA SIR支持。该IC在两种接口之间桥接数据通信,提供了许多附加功能,如自动硬件和软件流控制支持、RS-485支持以及UART的软件重置。SC16IS740可以通过SPI或I2C接口进行配置,通过向与16C450兼容的一组寄存器写入值来实现。保持与广受欢迎的16C450异步通信元件(ACE)的向后兼容性,这使得软件可以轻松编写或从其他平台移植。第二个IC提供了RS-232通信的物理电平转换,以及±15kV范围内的ESD保护。由于SC16IS740仅使用TTL/CMOS逻辑电平操作,因此需要另一个IC来在硬件层面提供适当的信号转换。RS-232信号的电压电平可以在-15V和+15V之间变化(当线路未断言时为-3V至-15V,断言时为+3V至+15V)。使用了Maxim Integrated的低功耗
真正RS-232收发器MAX3237,用于将SC16IS740的CMOS/TTL电平UART信号调理为适当的RS-232信号。所有UART线路都通过此IC驱动,包括RXD、TXD、CTS和RTS线路。在转换为RS-232信号电平后,这些信号通过标准RS232连接器(DE-9)可用。Click板™配备了许多SMD跳线。有五个跳线在COMM SEL标签下分组,用于选择两个可用接口之一:SPI和I2C。通过将所有跳线移动到所需位置,用户可以选择与主机MCU通信的接口。建议一次移动所有跳线到左(SPI)或右(I2C)位置。#RESET引脚执行SC16IS740 IC的硬件重置。除了硬件重置外,此设备还支持软件重置,通过向SRESET寄存器写入值来实现。电源重置后或通过#RESET引脚发送重置脉冲后,建议等待外部时钟振荡器稳定。提供的外部时钟振荡器以1.8432 MHz工作,稳定时间最长为3ms。#RESET引脚路由到mikroBUS™
RST引脚,并且为低电平有效。#INT允许主机MCU接收来自SC16IS740的中断。此引脚允许七个不同的中断源生成中断信号。这样可以编写更优化的软件(固件),因为主机MCU不必连续轮询LSR寄存器以查看是否需要服务任何中断。然而,软件不必使用中断,因为每个中断源都将在线路状态寄存器(LSR)中指示。A0/#CS线有两个用途:当SC16IS740 IC处于SPI模式时,此引脚执行常规的SPI芯片选择功能。当处于I2C模式时,此引脚确定设备的I2C地址。因此,可以通过对该引脚施加特定逻辑电平来轻松更改SC16IS740 IC的I2C地址。SC16IS740的数据手册提供了有关使用和配置SC16IS740 IC的更多信息。然而,Click板™由mikroSDK库支持,提供简化原型和固件开发的功能。此Click板™仅在3.3V下运行。为了能够与使用5V逻辑电平通信线的MCU一起使用,应使用适当的电平转换电路。
功能概述
开发板
Nucleo 32开发板搭载STM32F031K6 MCU,提供了一种经济且灵活的平台,适用于使用32引脚封装的STM32微控制器进行实验。该开发板具有Arduino™ Nano连接性,便于通过专用扩展板进行功能扩展,并且支持mbed,使其能够无缝集成在线资源。板载集成
ST-LINK/V2-1调试器/编程器,支持通过USB重新枚举,提供三种接口:虚拟串口(Virtual Com port)、大容量存储和调试端口。该开发板的电源供应灵活,可通过USB VBUS或外部电源供电。此外,还配备了三个LED指示灯(LD1用于USB通信,LD2用于电源
指示,LD3为用户可控LED)和一个复位按钮。STM32 Nucleo-32开发板支持多种集成开发环境(IDEs),如IAR™、Keil®和基于GCC的IDE(如AC6 SW4STM32),使其成为开发人员的多功能工具。
微控制器概述
MCU卡片 / MCU
建筑
ARM Cortex-M0
MCU 内存 (KB)
32
硅供应商
STMicroelectronics
引脚数
32
RAM (字节)
4096
你完善了我!
配件
Click Shield for Nucleo-32是扩展您的开发板功能的理想选择,专为STM32 Nucleo-32引脚布局设计。Click Shield for Nucleo-32提供了两个mikroBUS™插座,可以添加来自我们不断增长的Click板™系列中的任何功能。从传感器和WiFi收发器到电机控制和音频放大器,我们应有尽有。Click Shield for Nucleo-32与STM32 Nucleo-32开发板兼容,为用户提供了一种经济且灵活的方式,使用任何STM32微控制器快速创建原型,并尝试各种性能、功耗和功能的组合。STM32 Nucleo-32开发板无需任何独立的探针,因为它集成了ST-LINK/V2-1调试器/编程器,并随附STM32全面的软件HAL库和各种打包的软件示例。这个开发平台为用户提供了一种简便且通用的方式,将STM32 Nucleo-32兼容开发板与他们喜欢的Click板™结合,应用于即将开展的项目中。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图
一步一步来
项目组装
实时跟踪您的结果
应用程序输出
此款Click板可通过两种方式进行接口连接和监控:
Application Output
- 在调试模式下,使用“Application Output”窗口进行实时数据监控。按照本教程正确设置它。
UART Terminal
- 通过UART终端使用USB to UART converter监控数据有关详细说明,请查看本教程。
软件支持
库描述
该库包含UART I2C/SPI Click驱动程序的 API。
关键功能:
uarti2cspi_advanced_init
- 高级初始化功能。uarti2cspi_uart_write_text
- UART写入文本功能。uarti2cspi_uart_read
- 读取Click模块的一个字节功能。
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* \file
* \brief UARTI2CSPI Click example
*
* # Description
* This example showcases how to initialize, configure and use the UART I2C/SPI click module.
* The click is a I2C/SPI to UART bridge interface. It requires a RS232/485 cable in order to be
* connected to other click module or an adapter.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes the driver, configures UART, and enables UART interrupts.
*
* ## Application Task
* Depending on the selected mode, it reads all the received data or sends the desired message
* every 2 seconds.
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "uarti2cspi.h"
// ------------------------------------------------------------------ VARIABLES
// #define DEMO_APP_TRANSMITTER
#define DEMO_APP_RECEIVER
#define TEXT_TO_SEND "MikroE - UART I2C/SPI click\r\n"
static uarti2cspi_t uarti2cspi;
static log_t logger;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
uarti2cspi_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.
uarti2cspi_cfg_setup( &cfg );
UARTI2CSPI_MAP_MIKROBUS( cfg, MIKROBUS_1 );
uarti2cspi_init( &uarti2cspi, &cfg );
Delay_ms( 1000 );
uarti2cspi_advanced_init( &uarti2cspi, 115200, UARTI2CSPI_UART_8_BIT_DATA,
UARTI2CSPI_UART_NOPARITY,
UARTI2CSPI_UART_ONE_STOPBIT );
Delay_ms( 100 );
uarti2cspi_interrupt_enable( &uarti2cspi, UARTI2CSPI_RXD_INT_EN | UARTI2CSPI_THR_EMPTY_INT_EN );
Delay_ms( 100 );
#ifdef DEMO_APP_TRANSMITTER
log_info( &logger, "---- TRANSMITTER MODE ----" );
#endif
#ifdef DEMO_APP_RECEIVER
log_info( &logger, "---- RECEIVER MODE ----" );
#endif
Delay_ms( 1000 );
}
void application_task ( void )
{
#ifdef DEMO_APP_TRANSMITTER
uarti2cspi_uart_write_text( &uarti2cspi, TEXT_TO_SEND );
log_info( &logger, "---- The message has been sent ----" );
Delay_ms( 2000 );
#endif
#ifdef DEMO_APP_RECEIVER
if ( uarti2cspi_uart_data_ready( &uarti2cspi ) )
{
uint8_t rx_data = uarti2cspi_uart_read( &uarti2cspi );
log_printf( &logger, "%c", rx_data );
}
#endif
}
void main ( void )
{
application_init( );
for ( ; ; )
{
application_task( );
}
}
// ------------------------------------------------------------------------ END
额外支持
资源
类别:RS232