有用超核的朋友吗?DMA配置串口到内存怎么都不对
刚开始学习 用的朝核2.5功能:将串口2接收数据存放到内存数组中,在WHILE中不停打印出这个数组的值 发现怎么都不对 代码如下:
DMA初始化:
/* DMA 串口接收 配置 */
static void UART_DMARevInit(uint32_t uartInstnace, uint8_t dmaChl, uint8_t * rxBuf)
{
DMA_InitTypeDef DMA_InitStruct1 = {0};
DMA_InitStruct1.chl = dmaChl;
DMA_InitStruct1.chlTriggerSource = UART_RevDMATriggerSourceTable;
DMA_InitStruct1.triggerSourceMode = kDMA_TriggerSource_Normal;
DMA_InitStruct1.minorLoopByteCnt =16;
DMA_InitStruct1.majorLoopCnt = 1;
DMA_InitStruct1.sAddr = (uint32_t)&UART2->D;
DMA_InitStruct1.sLastAddrAdj = 0;
DMA_InitStruct1.sAddrOffset = 0;
DMA_InitStruct1.sDataWidth = kDMA_DataWidthBit_8;
DMA_InitStruct1.sMod = kDMA_ModuloDisable;
DMA_InitStruct1.dAddr = (uint32_t)rxBuf;
DMA_InitStruct1.dLastAddrAdj =-16;
DMA_InitStruct1.dAddrOffset = 1;
DMA_InitStruct1.dDataWidth = kDMA_DataWidthBit_8;
DMA_InitStruct1.dMod = kDMA_ModuloDisable;
DMA_Init(&DMA_InitStruct1);
/* 完成 Major Loop 后不停止 Request 继续等待DMA硬件触发源触发 */
// DMA_EnableAutoDisableRequest(dmaChl, false);
}
main中 对串口初始化:
UART_QuickInit(UART2_RX_PD02_TX_PD03, 115200);
/* 配置DMA 打开UART_Rx_DMA功能 */
UART_ITDMAConfig(HW_UART2, kUART_DMA_Rx, true);
UART_DMARevInit(HW_UART2, DMA_REV_CH, UART_Buffer);
DMA_EnableRequest(DMA_REV_CH);
while(1)
{
unsigned char i;
printf("%d =%x\r\n",i,UART_Buffer);
i++;
if(i==16) i=0;
DelayMs(500);
}
输出的数据 :不停的是我接收数组的最后一个值 0x55 (0XAA 0X01 .....最后肯定是0x55) 这样8个字节 一般一次发两组数据 共16个字节。
大家帮我看看 哪里配置的不对 ,实在搞不出来了。 超核有文档说明这些函数或程序咋用不? 超核是个啥东西求科普 justdomyself 发表于 2015-4-21 11:09
超核是个啥东西求科普
百度搜一下不就知道了 超核是波兰科学家M.丹尼什和J.普涅夫斯基在1952年从暴露在宇宙线中的核乳胶里发现的。超核的发现,不仅证明了核由中子和质子组成,对于研究核子和超子之间的相互作用,以及超子进入原子核中后对其运动形态的影响都有重要作用。
中文名超核
类 别含有超子(见奇异粒子)的原子核
发现时间1952年
发现人科学家M.丹尼什和J.普涅夫斯基
含有超子(见奇异粒子)的原子核。最早发现的超核是含有一个Λ超子的Λ
超核,它是波兰科学家M.丹尼什和J.普涅夫斯基在1952年从暴露在宇宙线中的核乳胶里发现的。由于Λ超子是最轻的奇异重子,而强相互作用要求奇异数和重子数守恒,因此Λ超子在核物质中相对于强相互作用是稳定的,只能产生弱相互作用衰变。这使得Λ超核和Λ超子有几乎相同的寿命(大约为2×10秒)。因而在实验上比较容易观察到Λ超核。到目前为止,人们已经发现了几十种Λ超核,例如H、H、He、H、Be、C等。另外,还发现了两种含有两个Λ超子的双Λ超核(掆He和抍Be)。除了Λ超核外,还发现了∑超核。理论上还预言有可能发现Ξ超核,但实验上至今没有观察到。
产生超核的方法主要是通过奇异交换反应:
由于在这些反应中,K介子带的奇异数转移到Λ或∑超子上,因此称其为奇异交换反应。通过这些反应,实验物理学家已经测量到一系列相当清晰的超核激发能谱,为开展超核能谱学的理论研究创造了良好的条件。
应当注意,由于超核是一个由三类粒子(中子、质子和超子)组
成的多体系统,它比原子核有更多的激发方式。例如,在Λ超核和双 Λ超核中可能有五个粒子或六个粒子空间全对称的态,即所谓超对称态。这是普通原子核所没有的新型激发态。因此研究超核的运动规律具有更特殊的意义。 justdomyself 发表于 2015-4-21 12:09
超核是波兰科学家M.丹尼什和J.普涅夫斯基在1952年从暴露在宇宙线中的核乳胶里发现的。超核的发现,不仅证明 ...
你搜超核电子
呵呵
不过山外又该忙活了
解决方法:
DMA_InitStruct1.minorLoopByteCnt =16;->DMA_InitStruct1.minorLoopByteCnt =1;
DMA_InitStruct1.majorLoopCnt = 1;--->DMA_InitStruct1.majorLoopCnt = 16;
换成这样 收到的数据就OK了 但是心里还是没底的 感觉怪怪的
shouzhou 发表于 2015-4-23 22:43
解决方法:
DMA_InitStruct1.minorLoopByteCnt =16;->DMA_InitStruct1.minorLoopByteCnt =1;
...
关于DMA主循环、次循环的相关概念,你可以看一下论坛里的帖子:【Kinetis内部培训资料】eDMA模块
至于超核库具体怎么使用,还是得看他们得手册呢。 非常感谢你关于Kinetis的技术问题。如果你没有其他问题,我们将此帖默认为已解决.
页:
[1]