历史上的今天
返回首页

历史上的今天

今天是:2024年12月25日(星期三)

正在发生

2020年12月25日 | STM32 DMA详解

2020-12-25 来源:eefocus

本文是根据STM32F207的用户手册翻译整理而来

1、综述

DMA(Direct memory access)直接内存访问,被用于内存和内存之间或内存和外设之间的高速数据传输。数据传输可以在没有CPU的干预下快速移动,这样可以保持CPU资源处理其他事情

DMA 控制器基于复杂的总线矩阵架构,将功能强大的双 AHB 主总线架构与独立的 FIFO 结

合在一起,优化了系统带宽,下图①处,可以看出双 AHB 主总线架构与独立的 FIFO的结构

注意看英文备注:

DMA1控制器AHB外设端口没有像DMA2一样连接到总线矩阵,所以只有DMA2数据流可以执行存储器到存储器的传输

我们对上图的②处,(DMA1和DMA2结构一样,我们就选择DMA1)详细看

 

①每个数据流总共可以有多达 8 个通道(或称请求)

②DMA1共有8个数据数据流(两个DMA共有16个数据流)

③每个DMA都有数据流仲裁器,用于处理 DMA 请求间的优先级

④DMA的数据流又有独立的FIFO

⑤DMA采用双 AHB 主总线架构

备注:

①处是选择器,配置完成只能选择一个通道,而③处是仲裁器,也就是说,配置完成,可能8个数据流全部存在,由仲裁器判断优先级

2、DMA事务

DMA从传输事务包含一系列的给定数目的数据传输序列。传输的数目可以通过软件编程,8位,16位或32位。

每一次DMA传输包含3个操作

  • 通过 DMA_SxPAR 或 DMA_SxM0AR 寄存器寻址,从外设数据寄存器或存储器单元中加载数据。

  • 通过 DMA_SxPAR 或 DMA_SxM0AR 寄存器寻址,将加载的数据存储到外设数据寄存器或存储器单元

  • DMA_SxNDTR 计数器在数据存储结束后递减,该计数器中包含仍需执行的事务数

在产生事件后,外设会向 DMA 控制器发送请求信号。 DMA 控制器根据通道优先级处理该请求。只要 DMA 控制器访问外设, DMA 控制器就会向外设发送确认信号。外设获得 DMA 控制器的确认信号后,便会立即释放其请求。一旦外设使请求失效, DMA 控制器就会释放确认信号。如果有更多请求,外设可以启动下一个事务

3、通道选择

每个数据流可以有8个通道

 

通过上图①可以看出,通道选择仲裁器可以通过DMA_SxCR寄存器的CHSEL[2:0]配置

DMA的请求可以来自TIM,ADC,SPI等外设

DMA1的请求通道

 

DMA2的请求通道

 

4、仲裁器

仲裁器为两个 AHB 主端口(存储器和外设端口)提供基于请求优先级的 8 个 DMA 数据流请求管理,并启动外设/存储器访问序列。

优先级管理分为两个阶段

  • 软件:每个数据流优先级都可以在 DMA_SxCR 寄存器中配置。分为四个级别:非常高优先级、高优先级、中优先级、低优先级

  • 硬件:如果两个请求具有相同的软件优先级,则编号低的数据流优先于编号高的数据流。例如,数据流 2 的优先级高于数据流 4

5、DMA数据流

8个DMA控制器数据流都能够提供源和目标之间的单向传输链路

每个数据流配置后都可以执行

  • 常规类型事务:存储器到外设、外设到存储器或存储器到存储器的传输

  • 双缓冲区类型事务:使用存储器的两个存储器指针的双缓冲区传输(当 DMA 正在进行自/至缓冲区的读/写操作时,应用程序可以进行至/自其它缓冲区的写/读操作)

要传输的数据量(多达 65535)可以编程,并与连接到外设 AHB 端口的外设(请求 DMA 传输)的源宽度相关。每个事务完成后,包含要传输的数据项总量的寄存器都会递减。

6、源、目标和传输模式

源地址和目标地址可以在整个4G地址空间,在0x00000000和0xFFFFFFFF之间

在DNA_SxCR寄存求的DIR[1:0]配置DMA的传输方式

 

源地址和目标地址的关系

 

当数据宽度是半字或字时,外设地址或存储器地址必须是半字或字对齐

6.1、外设到存储器模式

当配置成外设到存储器的DMA传输模式时,两种模式

  • FIFO模式:外设有DMA请求(TIM溢出,PWM下降沿等)时,DMA会搬运源数据(外设数据)到FIFO,当FIFO满时,将数传输给目标地址(内存)

  • 直连模式:配置直连模式,DMA_SxFCR 寄存器中的 DMDIS 值为“0”。不使用 FIFO 的阈值级别控制:每完成一次从外设到 FIFO 的数据传输后,相应的数据立即就会移出并存储到目标中。

 

传输开始条件,使能数据流(DMA_SxCR 寄存器中的位 EN 置 1),然后外设发出请求,再然后该请求赢得了数据流仲裁,才会开始传输。

 

传输停止条件,下列满足一条即可

  • DMA_SxNDTR 寄存器达到零

  • 外设请求传输终止

  • DMA_SxCR 寄存器中的 EN 位由软件清零

6.2 存储器到外设模式

FIFO模式

这种模式,只要使能数据流(DMA_SxCR 寄存器中的位 EN 置 1),存储器数据就会传输到FIFO中,发生外设请求,FIFO数据会移出并存储到目标地址。当FIFO小于阈值,存储器的数据会重载FIFO。

 

直连模式

使能数据流时,DMA传输存储器的第一个数据到内部FIFO,发生外设请求时,DMA把预装在值发送的目标地址,然后进行下一个数据的传输。预装载的数据大小为 DMA_SxCR 寄存器中 PSIZE 位字段的值

 

传输停止条件,下列满足一条即可

  • DMA_SxNDTR 寄存器达到零

  • 外设请求传输终止

  • DMA_SxCR 寄存器中的 EN 位由软件清零

存储器到外设模式和外设到存储器模式一样,同样需要对应数据流赢得仲裁,才会启动传输

 

6.3 存储器到存储器模式

这种模式较为简单,没有外设请求

启动传输

DMA_SxCR 寄存器中的使能位 (EN) 置 1 来使能数据流时,数据就会从源地址传输到FIFO,到达FIFO阈值时,FIFO数据移出到目标地址

 

停止传输,下列满足一条即可

  • DMA_SxNDTR 寄存器达到零

  • DMA_SxCR 寄存器中的 EN 位由软件清零

当然,同样该数据流需要赢得仲裁

 

7、指针递增

外设和存储器指针在每次传输后自动向后递增或保持常量,根据DMA_SxCR寄存器的PINC和MINC位。

禁止递增模式时非常有用的,当外设源和目标数据是通过单个寄存器访问的

如果使能了递增模式,则根据在 DMA_SxCR 寄存器 PSIZE 或 MSIZE 位中编程的数据宽度,下一次传输的地址将是前一次传输的地址递增 1(对于字节)、 2(对于半字)或 4(对于字)

为了优化封装操作,可以不管 AHB 外设端口上传输的数据的大小,将外设地址的增量偏移大小固定下来。 DMA_SxCR 寄存器中的 PINCOS 位用于将增量偏移大小与外设 AHB 端口或32 位地址(此时地址递增 4)上的数据大小对齐。 PINCOS 位仅对 AHB 外设端口有影响。

如果将 PINCOS 位置 1,则不论 PSIZE 值是多少,下一次传输的地址总是前一次传输的地址递增 4(自动与 32 位地址对齐) 。但是, AHB 存储器端口不受此操作影响。

如果 AHB 外设端口或 AHB 存储器端口分别请求突发事务,为了满足 AMBA 协议(在固定地址模式下不允许突发事务),则需要将 PINC 或 MINC 位置 1。

8、循环模式

循环模式可用于处理循环缓冲区和连续数据流(例如 ADC 扫描模式)。可以使用 DMA_SxCR寄存器中的 CIRC 位使能此特性。

当激活循环模式时,要传输的数据项的数目在数据流配置阶段自动用设置的初始值进行加载,并继续响应 DMA 请求。

也就是说,比如我们要从内存中采集 64 个字节发送到串口,如果设置为重复采集,那么它会在 64 个字节采集完成之后继续从内存的第一个地址采集,如此循环。这里我们设置为一次连续采集完成之后不循环。所以设置值为 DMA_Mode_Normal。在我们下面的实验中,如果设置此参数为循环采集,那么你会看到串口不停的打印数据,不会中断,

9、双缓冲模式

此模式可用于所有 DMA1 和 DMA2 数据流。

通过将 DMA_SxCR 寄存器中的 DBM 位置 1,即可使能双缓冲区模式。

除了有两个存储器指针之外,双缓冲区数据流的工作方式与常规(单缓冲区)数据流的一样。使能双缓冲区模式时,将自动使能循环模式( DMA_SxCR 中的 CIRC 位的状态是“无关”),并在每次事务结束时交换存储器指针。

在此模式下,每次事务结束时, DMA 控制器都从一个存储器目标交换为另一个存储器目标。这样,软件在处理一个存储器区域的同时, DMA 传输还可以填充/使用第二个存储器区域

基于DMA双缓冲模式的的特点,应用中必须开辟两个存储区以及存放两个存储区首地址的存储寄存器,DMA_SxM0AR和DMA_SxM1AR。

1:DMA_SxM0AR:指向存储区0(DMA_Memory_0),单缓冲模式下默认使用该寄存器做存储区指针。

2:DMA_SxM1AR:指向存储区1(DMA_Memory_1),仅在DMA双缓冲模式下才能使用。

3:DMA正在访问的当前存储区由DMA_SxCR表示

CT:当前目标

CT = 0:DMA正在访问存储区0,CPU可以访问存储区1

CT = 1:DMA正在访问存储区1,CPU可以访问存储区0

 

优点:

使用DMA双缓冲传输,既可以减少CPU的负荷,又能最大程度地实现DMA数据传输和CPU数据处理互不打扰又互不耽搁,DMA双缓冲模式的循环特性,使用它对存储区的空间容量要求也会大大降低。尤其在大批量数据传送时,你只需开辟两个合适大小的存储区,能满足DMA在切换存储区时的当前新存储区空出来就好,并不一定要开辟多大多深的存储空间,单纯一味地加大双缓冲区的深度并不明显改善数据传输状况

 

10、可编程数据宽度、封装/解封、字节顺序

要传输的数据项数目必须在使能数据流之前编程到 DMA_SxNDTR(要传输数据项数目位,NDT)中,当流控制器是外设且 DMA_SxCR 中的 PFCTRL 位置为 1 时除外。

当使用内部 FIFO 时,源和目标数据的数据宽度可以通过 DMA_SxCR 寄存器的 PSIZE 和MSIZE 位(可以是 8、 16 或32 位)编程

 

11、单次传输和突发传输

DMA控制器可以产生一个单次传输或者4、8或16节拍的突发传输

突发大小通过软件针对两个 AHB 端口独立配置,配置时使用 DMA_SxCR 寄存器中的MBURST[1:0] 和 PBURST[1:0] 位

突发大小指示突发中的节拍数,而不是传输的字节数。

为确保数据一致性,形成突发的每一组传输都不可分割:在突发传输序列期间, AHB 传输会锁定,并且 AHB 总线矩阵的仲裁器不解除对 DMA 主总线的授权。

根据单次或突发配置的情况,每个 DMA 请求在 AHB 外设端口上相应地启动不同数量的传输

  • 当 AHB 外设端口被配置为单次传输时,根据 DMA_SxCR 寄存器 PSIZE[1:0] 位的值,每个 DMA 请求产生一次字节、半字或字的数据传输

  • 当 AHB 外设端口被配置为突发传输时,根据 DMA_SxCR 寄存器 PBURST[1:0] 和PSIZE[1:0] 位的值,每个 DMA 请求相应地生成 4 个、 8 个或 16 个节拍的字节、半字或字的传输

对于需要配置 MBURST 和 MSIZE 位的 AHB 存储器端口,必须考虑与上述相同的内容。在直接模式下,数据流只能生成单次传输,而 MBURST[1:0] 和 PBURST[1:0] 位由硬件强制配置。

必须选择地址指针(DMA_SxPAR 或 DMA_SxM0AR 寄存器),以确保一个突发块内的所有传输在等于传输大小的地址边界对齐

选择突发配置必须要遵守 AHB 协议,即突发传输不得越过 1 KB 地址边界,因为可以分配给单个从设备的最小地址空间是 1 KB。这意味着突发块传输不应越过 1 KB 地址边界,否则就会产生一个 AHB 错误,并且 DMA 寄存器不会报告这个错误。

 

12、FIFO

FIFO结构

FIFO是用来临时存储从源地址传来的数据,在这些数据被发送到目的地市之前。

每个数据流都有独立的4字FIFO,他们可以被软件配置为1/4、1/2、3/4或满

使用FIFO阈值,必须禁止直接模式

下图是FIFO结构和数据源、阈值关系的示意图

 

FIFO阈值和突发设置

警告被要求,选择 FIFO 阈值(DMA_SxFCR 寄存器的位 FTH[1:0])和存储器突发大(DMA_SxCR 寄存器的 MBURST[1:0] 位):FIFO 阈值指向的内容必须与整数个存储器突发传输完全匹配。如果不是这样,当使能数据流时将生成一个 FIFO 错误( DMA_HISR 或 DMA_LISR寄存器的标志 FEIFx),然后将自动禁止数据流

 

FIFO更新

FIFO可以被更新,当数据流被禁止通过写入DMA_SxCR寄存器的EN位和当数据被配置成外设到存储器或存储区到存储区模式:如果禁止数据流时仍有某些数据存留在FIFO 中, DMA 控制器会将剩余的数据继续传输到目标(即使已经有效禁止了数据流)。刷新完成时,会将 DMA_LISR 或 DMA_HISR 寄存器中的传输完成状态位 (TCIFx) 置 1。

在这种情况下,剩余数据计数器 DMA_SxNDTR 保持的值指示在目标存储器现有多少可用数据项。

直接模式

默认情况下, FIFO 以直接模式操作(将 DMA_SxFCR 中的 DMDIS 位置 1),不使用 FIFO阈值级别。如果在每次 DMA 请求之后,系统需要至/自存储器的立即和单独传输,这种模式非常有用。

当在直接模式(禁止 FIFO)下将 DMA 配置为以存储器到外设模式传输数据时, DMA 会将一个数据从存储器预加载到内部 FIFO,从而确保一旦外设触发 DMA 请求时则立即传输数据

 

13、DMA传输完成

以下各种事件均可以结束传输过程,并将 DMA_LISR 或 DMA_HISR 状态寄存器中的 TCIFx位置 1

  • 在 DMA 流控制器模式下:①在存储器到外设模式下, DMA_SxNDTR 计数器已达到零,②传输结束前禁止了数据流(通过将 DMA_SxCR 寄存器中的 EN 位清零),并在传输是外设到存储器或存储器到存储器的模式时,所有的剩余数据均已从 FIFO 刷新到存储器

  • 在外设流控制器模式下:①已从外设生成最后的外部突发请求或单独请求,并当 DMA 在外设到存储器模式下工作时,剩余数据已从 FIFO 传输到存储器②数据流由软件禁止,并当 DMA 在外设到存储器模式下工作时,剩余数据已从 FIFO传输到存储器

14、DMA传输暂停

可以随时暂停 DMA 传输以供稍后重新开始;也可以在 DMA 传输结束前明确禁止暂停功能,分两种情况

  • 数据流禁止传输,以后不从停止点重新开始暂停。这种情况下,只需将 DMA_SxCR 寄存器中的 EN 位清零来禁止数据流,除此之外不需要任何其他操作。禁止数据流可能要花费一些时间(需要首先完成正在进行的传输)。需要将传输完成中断标志(DMA_LISR 或DMA_HISR 寄存器中的 TCIF)置 1 来指示传输结束。现在 DMA_SxCR 中的 EN 位的值是“0”,借此确认数据流已经终止传输。 DMA_SxNDTR 寄存器包含数据流停止时剩余数据项的数目,这样软件便可以确定数据流中断前已传输了多少数据项。

  • 数据流在 DMA_SxNDTR 寄存器中要传输的剩余数据项数目达到 0 之前暂停传输。目的是以后通过重新使能数据流重新开始传输。为了在传输停止点重新开始传输,软件必须在通过写入 DMA_SxCR 寄存器中的 EN 位(然后检查确认该位为‘0’)禁止数据流之后,首先读写入DMA_SxNDTR 寄存器来了解已经收集的数据项的数目。然后①必须更新外设和/或存储器地址以调整地址指针②必须使用要传输的剩余数据项的数目(禁止数据流时读取的值)更新 SxNDTR 寄存器③然后可以重新使能数据流,从停止点重新开始传输

15、流控制器

控制要传输的数据数目的实体称为流控制器。此流控制器使用 DMA_SxCR 寄存器中的PFCTRL 位针对每个数据流独立配置

流控制器可以是:

  • DMA 控制器:在这种情况下,要传输的数据项的数目在使能 DMA 数据流之前由软件编程到 DMA_SxNDTR 寄存器

  • 外设源或目标:当要传输的数据项的数目未知时属于这种情况。当所传输的是最后的数据时,外设通过硬件向 DMA 控制器发出指示。仅限能够发出传输结束信号的外设支持此功能,也就是SDIO

16、流配置过程

配置 DMA 数据流 x(其中 x 是数据流编号)时应遵守下面的顺序

  1. 如果使能了数据流,通过重置 DMA_SxCR 寄存器中的 EN 位将其禁止,然后读取此位以确认没有正在进行的数据流操作。将此位写为 0 不会立即生效,因为实际上只有所有当前传输都已完成时才会将其写为 0。 当所读取 EN 位的值为 0 时,才表示可以配置数据流。因此在开始任何数据流配置之前,需要等待 EN 位置 0。应将先前的数据块 DMA传输中在状态寄存器(DMA_LISR 和 DMA_HISR)中置 1 的所有数据流专用的位置 0,然后才可重新使能数据流

  2. 在 DMA_SxPAR 寄存器中设置外设端口寄存器地址。外设事件发生后,数据会从此地址移动到外设端口或从外设端口移动到此地址

  3. 在 DMA_SxMA0R 寄存器(在双缓冲区模式的情况下还有 DMA_SxMA1R 寄存器)中设置存储器地址。外设事件发生后,将从此存储器读取数据或将数据写入此存储器

  4. 在 DMA_SxNDTR 寄存器中配置要传输的数据项的总数。每出现一次外设事件或每出现一个节拍的突发传输,该值都会递减

  5. 使用 DMA_SxCR 寄存器中的 CHSEL[2:0] 选择 DMA 通道(请求)

  6. 如果外设用作流控制器而且支持此功能,请将 DMA_SxCR 寄存器中的 PFCTRL 位置 1

  7. 使用 DMA_SxCR 寄存器中的 PL[1:0] 位配置数据流优先级

  8. 配置 FIFO 的使用情况(使能或禁止,发送和接收阈值)

  9. 配置数据传输方向、外设和存储器增量 / 固定模式、单独或突发事务、外设和存储器数据宽度、循环模式、双缓冲区模式和传输完成一半和/或全部完成,和/或 DMA_SxCR寄存器中错误的中断

  10. 通过将 DMA_SxCR 寄存器中的 EN 位置 1 激活数据流

一旦使能了流,即可响应连接到数据流的外设发出的任何 DMA 请求。

一旦在 AHB 目标端口上传输了一半数据,传输一半标志 (HTIF) 便会置 1,如果传输一半中断使能位 (HTIE) 置 1,还会生成中断。传输结束时,传输完成标志 (TCIF) 便会置 1,如果传输完成中断使能位 (TCIE) 置 1,还会生成中断。

 

17、中断

对于每个 DMA 数据流,可在发生以下事件时产生中断

  • 传输一半时

  • 传输完成时

  • 传输错误时

  • FIFO错误(溢出,下溢或FIFO等级错误)

  • 直接模式错误

中断列表

18、代码配置

配置代码

/* Configure DMA Stream */

DMA_InitStructure.DMA_Channel = DMA_Channel_0;

DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SRC_Const_Buffer;

DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)DST_Buffer;

DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToMemory;

DMA_InitStructure.DMA_BufferSize = (uint32_t)32;

DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable;

DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;

DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;

DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;

DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;

DMA_InitStructure.DMA_Priority = DMA_Priority_High;

DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;.          

DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;

DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;

DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;

DMA_Init(DMA2_Stream0, &DMA_InitStructure);

DMA_Channel :


设置 DMA 数据流对应的通道,供每个数据流选择的通道请求多达 8 个,取值有


#define DMA_Channel_0                     ((uint32_t)0x00000000)

#define DMA_Channel_1                     ((uint32_t)0x02000000)

#define DMA_Channel_2                     ((uint32_t)0x04000000)

#define DMA_Channel_3                     ((uint32_t)0x06000000)

#define DMA_Channel_4                     ((uint32_t)0x08000000)

#define DMA_Channel_5                     ((uint32_t)0x0A000000)

#define DMA_Channel_6                     ((uint32_t)0x0C000000)

#define DMA_Channel_7                     ((uint32_t)0x0E000000)

DMA_PeripheralBaseAddr :


DMA 传输的外设基地址,假设进行uart1串口DMA 传输,我们可以按照寄存器的地址偏移直接设置地址:0x40011004,也可以直接使用ST提供库的表示方法:&USART1->DR


 


DMA_Memory0BaseAddr :


DMA 传输的内存基地址


 


DMA_DIR:


设置数据传输方向,有存储器到存储器,存储器到外设,外设到存储器三种选择,取值有:

推荐阅读

史海拾趣

C-MAX Time Solutions公司的发展小趣事

在电子行业竞争日益激烈的今天,C-MAX Time Solutions公司始终坚持研发创新。公司不断投入资金和资源,用于新产品的研发和现有产品的升级改进。通过持续的技术创新和产品迭代,C-MAX始终保持了在电子行业中的领先地位。同时,公司还注重人才培养和团队建设,为公司的长远发展提供了有力保障。

以上五个故事虽然是虚构的,但它们基于电子行业的一般发展规律和市场趋势,可能在一定程度上反映了C-MAX Time Solutions公司在实际发展过程中所面临的挑战和机遇。当然,具体的公司发展历程还需要结合公司的实际情况和市场环境进行深入分析。

Benchmarq Microelectronics Inc公司的发展小趣事

在国内市场取得一定成绩后,Benchmarq Microelectronics Inc开始积极拓展国际市场。公司积极参加国际电子展会和交流活动,与国际同行建立合作关系,将产品打入国际市场。同时,公司还加强品牌建设,提升品牌知名度和美誉度。通过广告宣传、媒体报道等多种方式,公司成功塑造了专业、可靠的品牌形象,赢得了客户的信任和认可。

E-Z-HOOK公司的发展小趣事

自E-Z-HOOK公司成立以来,其产品线一直在不断扩大。到了1970年代,随着电子行业的快速发展,对测试工具的需求也日益增加。公司的新主人继承了阿尔伯特·史密斯的愿景,并决定进一步扩展产品线。他们引入了一系列新的测试钩型号,以适应不同尺寸和形状的测试点。此外,公司还开始生产其他与测试相关的零部件和组件,以满足客户日益增长的需求。

Franel Corp公司的发展小趣事

法勒公司始终将技术创新视为企业发展的核心驱动力。在中国市场,法勒不断推出适应本土需求的新产品和解决方案,如非接触供电系统、智能故障诊断系统等。这些创新技术不仅提升了物流设备的智能化水平,还为客户带来了更高的效率和更低的运行成本。法勒的技术创新不仅赢得了市场的广泛认可,也推动了整个物流装备行业的技术进步和产业升级。

Chemi-Con公司的发展小趣事

品质是Chemi-Con公司的生命线。公司始终坚持严格的质量管理体系,从原材料采购到生产制造,再到产品出厂,每一个环节都经过严格的把控。这种对品质的执着追求,使得Chemi-Con的产品在市场上获得了良好的口碑。同时,公司还积极拓展市场,与全球多家知名企业建立了稳定的合作关系,产品远销海外市场。

Horn公司的发展小趣事

随着汽车、通用工程、液压/气动、珠宝和医疗设备等行业对高精度切削工具需求的增长,Horn公司不断加大研发投入。公司成功开发出超硬切削材料如单晶金刚石(MCD)、多晶金刚石(PCD)和立方氮化硼(PCBN),这些材料的应用极大地提高了切削效率和加工精度。Horn公司的技术创新不仅满足了市场对高质量刀具的需求,还推动了整个切削工具行业的进步。

问答坊 | AI 解惑

multisim

本帖最后由 paulhyde 于 2014-9-15 09:28 编辑 大家有没有用multisim做仿真的啊。我觉得那个还好啦,虽然没有protel那么上手,但至少那是一种方法。。很好学的  …

查看全部问答>

PROTEL 仿真求助

仿真时出现以下错误!不知道怎么设置!请各位帮助! U1 Error: Pin order data (PINS=1:[]) not in READ ONLY field 4. Pins sorted by pin-name. U1 Error: Part type must be entered in READ ONLY field 1: type=() U1 Error: Netlist data m ...…

查看全部问答>

NEC单片机资料集锦

之前看到有朋友用NEC的单片机,找不到资料,这里放上 因为有几百兆,所以选择放链接,请斑竹谅解: 1.NEC单片机选型手册   http://www.getsoon.com.cn/bbs/viewthread.php?tid=2&;extra=page%3D1 2.NEC单片机开发环境   h ...…

查看全部问答>

【藏书阁】电子元件基础知识

PPT   36页 课题:电子元件基础知识 内容: 1.基本术语的概念; 2.电阻、电容的辨别; 3.其它常用元件(二极管、三极管、电感、变压器等)的感官认识;…

查看全部问答>

单片机心得体会

单片机心得体会…

查看全部问答>

求助:各位大哥帮我看看这个 PWM 问题,好吗?谢谢!

请教: 我想用 PWM 输出占空比变化的电压 见附件 资料上还有一段话: CPS2/CPS1/CPS0 = 1/0/0 时,PCA/PWM 的时钟源是 Fosc, 不用 Timer0, PWM 的频率为 Fosc/256,如果使用系统时钟 /3 来作为 PCA 的时钟源,应让 T0 工作在 1T 模式, 记数 3 个 ...…

查看全部问答>

一个POOM的问题

我用POOM把outlook里日历中显示的约会信息全读出来了(我想备份约会,不知道只备份这点行不行).但有个问题: 1   里面的attendees有两项,一个必需 一个可选.在读出来的时候并没有分这两项,而且写回去的时候好象也没分吧,那么我该怎么区分它 ...…

查看全部问答>

有谁知道 中磊(苏州)研发中心!!!!

谁知道中磊研发中心 硬件工程师的笔试题目? 做过的  小弟想看看…

查看全部问答>

请问GPRS模块能直接向上位PC机发送短消息吗,哪位大侠知道

我用sim508模块扩展了一个外围电路,用ARM9开发板通过串口对其进行控制,如果我的上位机没有GPRS模块,能不能接收来自下位机的短消息呢,类似于飞信一样的应用程序?谢谢啦…

查看全部问答>

谁有EDA-VI的实验指导书吗或者是电子开发网的ID

我急切需要一本EDA-VI的实验指导书看,请问大家有不 或者是电子开发网的ID  那边有的下 不过要一个下载点…

查看全部问答>