在线时间116 小时
UID3067944
注册时间2015-1-13
NXP金币0
TA的每日心情 | 衰 2017-5-27 11:02 |
---|
签到天数: 4 天 连续签到: 1 天 [LV.2]偶尔看看I
金牌会员
 
- 积分
- 1890
- 最后登录
- 2017-5-27
|
YL-KL26Z开发板是ARM® Cortex™-M0+内核,主频48MHZ,片上资源有:128K内部Flash,和32K的SRAM,8通道16位ADC,12位DAC,2路SPI,2路I2C,1路I2S,2路UART,1路LPUART,USB 2.0 FS OTG/ Host/Device控制器,板子小巧精致,功能齐全。
本人主要在该板上对ADC,DAC,SPI,UART做了研究和实验,下面分享下心得。
1、ADC实验,通过测量电位器VR1 3-2引脚之间的电压采集计算得出AD值,通过调节电位器旋钮即可改变此电压值。电路图如下:
采用U盘下载程序,按板子上的复位按钮后程序开始执行,执行结果通过串口调试工具查看,具体如下:
2、DAC实验
电路原理图如下
用DA产生一个正弦波并驱动喇叭响。下载程序后会听到喇叭清脆的响声。源码:uint16 gu16WaveformBuffer[33] = {0};
uint16 gu16SineWaveBuffer[] = {2047,2446,2830,3184,3494,3749,3938,4055,4094,4055,3938,3749,3494,3184,2830,2446,2047,
1648,1264,910,600,345,156,39,0,39,156,345,600,910,1264,1648,2047,0xFFF};
uint16 *pWaveform, *pGenerateData;
void myDelay (INT32U ulTime)
{
INT32U i;
i = 0;
while (ulTime--) {
for (i = 0; i < 2000; i++);
}
}
int main (void)
{
int i,num=2;
INT16U uiVout = 1; /* ¼ÆËãת»»Öµ */
SystemCoreClockUpdate();
uart0Init(9600,0,0,8,1);
printf("DAC generated take SineWave Test ");
dacInit(); /* DAC³õʼ»¯ */
while (1) {
for(i=0;i<33;i++)
{
gu16WaveformBuffer=gu16SineWaveBuffer;
dacTrigger(gu16WaveformBuffer); /* DACÊä³ö */
myDelay(1);
if(i==33) i=0;
}
}
}
3、SPI实验
本开发板是连一个SPI接口的flash,可以实现对flash 的读写。SPI协议需要另外学习一下。
电路图
源码SPI初始化设置等:
void spiInit (SPI_MemMapPtr SPI,BOOLEAN bMode)
{
SIM_SCGC4 |= SIM_SCGC4_SPI0_MASK; /* ¿ªÆôSPI0 */
/* CPOL = 0, SCK ΪµÍÓÐЧ */
/* MSTR = 1, SPI ´¦ÓÚÖ÷ģʽ */
/* LSBF = 0, MSB (λ7)ÔÚÏÈ */
/* SPIE = 0, SPI Öжϱ»½ûÖ¹ */
/* CPHA = 0, SCKµÚÒ»¸öʱÖÓÑØ²ÉÑù*/
SPI->C1 |= SPI_C1_SPE_MASK ; /* SPIʹÄÜ */
SPI->C1 &= ~(1 << SPI_C1_CPHA_SHIFT);
if(bMode == Master) { /* Ö÷ģʽ */
SPI->C1 |= SPI_C1_MSTR_MASK;
} else { /* ´Óģʽ */
SPI->C1 &= ~(1 << SPI_C1_MSTR_SHIFT);
}
SPI->BR = 2;//SPI_BR_SPPR(0) ; /* ʱÖÓ·ÖÆµ */
}
/*********************************************************************************************************
** º¯ÊýÃû³Æ: Send_Byte
** º¯Êý¹¦ÄÜ£ºSPI·¢ËÍÒ»¸ö×Ö½ÚÊý¾Ý SPI0Çý¶¯
** ÊäÈë²ÎÊý: data
** Êä³ö²ÎÊý: ÎÞ
** ·µ »Ø Öµ£ºÎÞ
*********************************************************************************************************/
INT8U Send_Byte (unsigned char ucdata)
{
INT8U ucTemp;
while((SPI0_S & SPI_S_SPTEF_MASK) != SPI_S_SPTEF_MASK); /* ·¢ËÍǰҪÏÈÅжϼĴæÆ÷ */
SPI0_DL = ucdata;
while((SPI0_S & SPI_S_SPRF_MASK) != SPI_S_SPRF_MASK); /* ½ÓÊÕÊý¾ÝÓÐЧ */
ucTemp = SPI0_DL; /* Çå¿Õ½ÓÊÕ±ê¼Ç¼Ä´æÆ÷ */
ucTemp = ucTemp;
return ucTemp;
}
/*********************************************************************************************************
** º¯ÊýÃû³Æ:Get_Byte
** º¯Êý¹¦ÄÜ:SPI½Ó¿Ú½ÓÊÕÒ»¸ö×Ö½ÚÊý¾Ý ʹÓÃSPI0
** ÊäÈë²ÎÊý:ÎÞ
** Êä³ö²ÎÊý:ÎÞ
*********************************************************************************************************/
INT8U Get_Byte (void)
{
INT8U ucTemp;
while((SPI0_S & SPI_S_SPTEF_MASK) != SPI_S_SPTEF_MASK); /* ·¢ËÍǰҪÏÈÅжϼĴæÆ÷ */
SPI0_DL = 0xff; /* ·¢ËÍ¿ÕÊý¾Ý¶ÁÈ¡ÄÚÈÝ */
while((SPI0_S & SPI_S_SPRF_MASK) != SPI_S_SPRF_MASK); /* ½ÓÊÕÊý¾ÝÓÐЧ */
ucTemp = SPI0_DL;
return (ucTemp); /* ·µ»Ø½ÓÊÕµ½µÄÊý¾Ý */
}
/*********************************************************************************************************
** Function name: spiTX
** Descriptions: spi³õʼ»¯
** input parameters: SPIÊäÈë»ùµØÖ· ²éѯ·½Ê½·¢ËÍÊý¾Ý
** output parameters: none
** Returned value: none
** Created by:
** Created date:
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
*********************************************************************************************************/
void spiTX(SPI_MemMapPtr SPI,INT8U ucData)
{
while((SPI->S & SPI_S_SPTEF_MASK) != SPI_S_SPTEF_MASK); /* ·¢ËÍǰҪÏÈÅжϼĴæÆ÷ */
SPI->DL = ucData;
}
烧写实验结果
4、串口调试
串口实验,可以从键盘上输入任何你想输入的字符,然后可以从串口调试工具上看到相应的字符,我输入的是abcdefg i love u,从串口上得到以下结果
|
|