FT230X USB转UART芯片技术规格书

需积分: 11 2 下载量 108 浏览量 更新于2024-07-17 收藏 823KB PDF 举报
"DS_FT230X.pdf 是Future Technology Devices International Ltd.发布的一款USB到基本UART接口芯片的资料,该芯片常用于器件设计。FT230X是一款单芯片USB到异步串行数据传输接口,具备多项高级功能,如无需USB特定固件编程、集成2048字节的多时间编程内存、集成时钟生成以及FTDI的无版税虚拟串口(VCP)和直接(D2XX)驱动等。" FT230X USB TO BASIC UART IC 是由Future Technology Devices International Ltd.开发的一款微型USB到串行接口芯片,主要设计用于简化PCB布局和提供高效的数据传输。以下是关于FT230X的关键特性: 1. **单芯片USB到串行转换**:FT230X芯片能够处理整个USB协议,这意味着用户在应用中无需编写额外的USB固件。 2. **内置MTP内存**:FT230X集成了2048字节的多时间编程内存(Multi-Time Programmable Memory),用于存储设备描述符和CBUS I/O配置,增强了灵活性。 3. **集成时钟生成**:芯片内部包含时钟发生器,不需要外部晶体,同时提供可选的时钟输出选择,可以实现与外部MCU或FPGA的无胶合接口。 4. **广泛的波特率支持**:数据传输速率范围广泛,从300波特到3兆波特(适用于RS422, RS485, 和 RS232),并且在TTL电平下运行。 5. **缓冲技术**:FT230X具有512字节的接收缓冲区和512字节的发送缓冲区,利用缓冲平滑技术,允许实现高数据吞吐量。 6. **驱动支持**:FTDI提供了无版税的虚拟串口驱动程序(VCP)和直接驱动(D2XX),消除了对USB驱动开发的需求,使得在多种操作系统上的使用更加方便。 7. **优化的引脚数量**:为了适应小型化PCB设计,FT230X的引脚数目经过优化,有助于节省空间。 这款芯片在设计时考虑了易用性、灵活性和性能,是嵌入式系统、工业控制、通信设备以及其他需要USB与串行接口转换的应用的理想选择。通过使用FT230X,开发者可以快速集成USB功能,而无需深入了解复杂的USB协议,从而专注于他们的核心应用开发。

import tensorflow as tf from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPool2D, Dropoutfrom tensorflow.keras import Model​# 在GPU上运算时,因为cuDNN库本身也有自己的随机数生成器,所以即使tf设置了seed,也不会每次得到相同的结果tf.random.set_seed(100)​mnist = tf.keras.datasets.mnist(X_train, y_train), (X_test, y_test) = mnist.load_data()X_train, X_test = X_train/255.0, X_test/255.0​# 将特征数据集从(N,32,32)转变成(N,32,32,1),因为Conv2D需要(NHWC)四阶张量结构X_train = X_train[..., tf.newaxis]    X_test = X_test[..., tf.newaxis]​batch_size = 64# 手动生成mini_batch数据集train_ds = tf.data.Dataset.from_tensor_slices((X_train, y_train)).shuffle(10000).batch(batch_size)test_ds = tf.data.Dataset.from_tensor_slices((X_test, y_test)).batch(batch_size)​class Deep_CNN_Model(Model):    def __init__(self):        super(Deep_CNN_Model, self).__init__()        self.conv1 = Conv2D(32, 5, activation='relu')        self.pool1 = MaxPool2D()        self.conv2 = Conv2D(64, 5, activation='relu')        self.pool2 = MaxPool2D()        self.flatten = Flatten()        self.d1 = Dense(128, activation='relu')        self.dropout = Dropout(0.2)        self.d2 = Dense(10, activation='softmax')        def call(self, X):    # 无需在此处增加training参数状态。只需要在调用Model.call时,传递training参数即可        X = self.conv1(X)        X = self.pool1(X)        X = self.conv2(X)        X = self.pool2(X)        X = self.flatten(X)        X = self.d1(X)        X = self.dropout(X)   # 无需在此处设置training状态。只需要在调用Model.call时,传递training参数即可        return self.d2(X)​model = Deep_CNN_Model()loss_object = tf.keras.losses.SparseCategoricalCrossentropy()optimizer = tf.keras.optimizers.Adam()​train_loss = tf.keras.metrics.Mean(name='train_loss')train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='train_accuracy')test_loss = tf.keras.metrics.Mean(name='test_loss')test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='test_accuracy')​# TODO:定义单批次的训练和预测操作@tf.functiondef train_step(images, labels):       ......    @tf.functiondef test_step(images, labels):       ......    # TODO:执行完整的训练过程EPOCHS = 10for epoch in range(EPOCHS)补全代码

2023-06-13 上传

优化这个代码import xarray as xr import netCDF4 as nc import pandas as pd import numpy as np import datetime import matplotlib.pyplot as plt import cartopy.mpl.ticker as cticker import cartopy.crs as ccrs import cartopy.feature as cfeature ds = xr.open_dataset('C:/Users/cindy/Desktop/SP.nc', engine='netcdf4') # 读取原始数据 ds_temp = xr.open_dataset('C:/Users/cindy/Desktop/SP.nc') # 区域提取* south_asia = ds_temp.sel(latitude=slice(38, 28), longitude=slice(75, 103)) indian_ocean = ds_temp.sel(latitude=slice(5, -15), longitude=slice(60, 100)) # 高度插值 south_asia_200hpa = south_asia.t.interp(level=200) indian_ocean_200hpa = indian_ocean.t.interp(level=200) south_asia_400hpa = south_asia.t.interp(level=400) indian_ocean_400hpa = indian_ocean.t.interp(level=400) # 区域平均 TTP = south_asia_400hpa.mean(dim=('latitude', 'longitude'))#.values TTIO = indian_ocean_400hpa.mean(dim=('latitude', 'longitude'))# TTP_200hpa = south_asia_200hpa.mean(dim=('latitude', 'longitude')) TTIO_200hpa = indian_ocean_200hpa.mean(dim=('latitude', 'longitude')) tlup=(TTP-TTIO)-(TTP_200hpa-TTIO_200hpa)-(-5.367655815) # 定义画图区域和投影方式 fig = plt.figure(figsize=[10, 8]) ax = plt.axes(projection=ccrs.PlateCarree()) # 添加地图特征 ax.set_extent([60, 140, -15, 60], crs=ccrs.PlateCarree()) ax.add_feature(cfeature.COASTLINE.with_scale('50m'), linewidths=0.5) ax.add_feature(cfeature.LAND.with_scale('50m'), facecolor='lightgray') ax.add_feature(cfeature.OCEAN.with_scale('50m'), facecolor='white') # 画距平场 im = ax.contourf(TTP_200hpa, TTP, tlup, cmap='coolwarm', levels=np.arange(-4, 4.5, 0.5), extend='both') # 添加色标 cbar = plt.colorbar(im, ax=ax, shrink=0.8) cbar.set_label('Temperature anomaly (°C)') # 添加经纬度坐标轴标签 ax.set_xticks(np.arange(60, 105, 10), crs=ccrs.PlateCarree()) ax.set_yticks(np.arange(-10, 40, 10), crs=ccrs.PlateCarree()) lon_formatter = cticker.LongitudeFormatter() lat_formatter = cticker.LatitudeFormatter() ax.xaxis.set_major_formatter(lon_formatter) ax.yaxis.set_major_formatter(lat_formatter) # 添加标题和保存图片 plt.title('Temperature anomaly at 400hPa over South Asia and the Indian Ocean') plt.savefig('temperature_anomaly.png', dpi=300) plt.show()

2023-05-22 上传