在线时间1145 小时
UID3124330
注册时间2015-11-26
NXP金币720
TA的每日心情 | 开心 2019-3-5 08:47 |
---|
签到天数: 1 天 [LV.1]初来乍到
金牌会员
- 积分
- 7777
- 最后登录
- 2024-3-29
|
熟悉一款芯片,都是从基本外设开始,前段时间在官方板卡上测试过FDCAN,和自己从头熟悉外设还是有区别的。这两天抽空熟悉了一下这款芯片的USART外设。板卡连接图如图1所示:
外接一个MA3232,方便使用串口线和PC连接测试。测试是比较简单的,却花了不少时间,因为急急忙忙画板子的时候,原理图有点错误。TTL测试没问题,外接IC就不行了,最终发现还是原理图的问题,所以说做啥事都要细心。
闲言少叙,程序参考的官方的SDK DEMO,这儿必须说一下,Config Tools虽然有瑕疵,但是瑕不掩瑜。借助Config Tools 很容易生成支持MDK的示例代码,也可以自行修改引脚定义,很方便。如图2所示。
将Config Tools生成的文件,移植到自己新建的工程里。其实不用移动文件,把路径添过来就行。如图3所示。
官方的Demo用的是Flexcomm0,自己用的是Flexcomm2,这一点尤其要注意的。把原Demo修改成发收数据,并修改终端定义,部分代码如下:
- /*
- * config.baudRate_Bps = 115200U;
- * config.parityMode = kUSART_ParityDisabled;
- * config.stopBitCount = kUSART_OneStopBit;
- * config.loopback = false;
- * config.enableTxFifo = false;
- * config.enableRxFifo = false;
- */
- USART_GetDefaultConfig(&config);
- config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE;
- config.enableTx = true;
- config.enableRx = true;
- USART_Init(DEMO_USART, &config, DEMO_USART_CLK_FREQ);
- /* Send g_tipString out. */
- // USART_WriteBlocking(DEMO_USART, g_tipString, (sizeof(g_tipString) / sizeof(g_tipString[0])) - 1);
- USART_WriteByte(DEMO_USART, 0x0a);
- /* Enable RX interrupt. */
- USART_EnableInterrupts(DEMO_USART, kUSART_RxLevelInterruptEnable | kUSART_RxErrorInterruptEnable);
- EnableIRQ(DEMO_USART_IRQn);
-
- /* Set systick reload value to generate 1ms interrupt */
- if (SysTick_Config(SystemCoreClock / 1000U))
- {
- while (1)
- {
- }
- }
- while (1)
- {
- /* Send data only when USART TX register is empty and ring buffer has data to send out. */
- USART_WriteBlocking (DEMO_USART,gw_data,2);
- SysTick_DelayTicks(1000U);
- }
- }
复制代码 接收中断:
- void DEMO_USART_IRQHandler(void)
- {
- // uint8_t data;
- static uint8_t i;
- /* If new data arrived. */
- if ((kUSART_RxFifoNotEmptyFlag | kUSART_RxError) & USART_GetStatusFlags(DEMO_USART))
- {
- gr_data[i++] = USART_ReadByte(DEMO_USART);
- if(i>1)
- i=0;
- }
- SDK_ISR_EXIT_BARRIER;
- }
复制代码
接下来上电测试:如图4所示:
|
|