<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【中科昊芯Start_DSC28027勇士開發板試用體驗】計時器

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-11-21 11:08 ? 次閱讀

本文來源電子發燒友社區,作者:xiaopeng, 帖子地址:https://bbs.elecfans.com/jishu_2290500_1_1.html

計時器演示

一、說明

勇士開發板上有一個四位共陰數碼管,于是想著能用它來顯示點什么,想了一下,也沒什么可以顯示的,只好用它來做個計時器,因為只有四位,也不可能顯示很復雜的內容。

四位數碼管如果同時顯示分鐘和秒中,正好可以用前兩位顯示分鐘,后兩位顯示秒中,那么可以最大顯示99分鐘59秒。想好了就開始干。

二、方案設計

1、查看原理圖

圖片.png

從原理圖可以看出,開發板使用了一顆I2C接口的數碼管驅動芯片TM1650,驅動芯片與DSP之間只需要兩個IO口就可以實現數碼管的控制,還是非常方便的。
另外,該芯片通過讀的方式能夠檢測外部的按鍵。

2、TM1650介紹

TM1650是一款國產4位共陰數碼管驅動芯片,它還帶有矩陣按鍵掃碼功能。它的基本參數如下:

  • 工作電壓:3~5V
  • 數碼管驅動模式:8段x4位共陰數碼管
  • 矩陣按鍵驅動模式:7x4矩陣按鍵,不支持組合鍵
  • 通信接口:類IIC,使用了IIC相同的時序,但沒有完全遵守IIC的協議,不帶從機地址

引腳定義

SCL:串行通信時鐘

SDA:串行通信數據線

做數碼管驅動使用時

  • DIGx:數碼管的位選引腳,灌電流驅動,最大可吸收150mA電流

  • A~DP:數碼管的段驅動引腳,拉電流驅動,最大可輸出25mA電流
    圖片.png

    通信協議

TM1650使用的是類IIC接口,只是不帶從機地址機制。所以總線上的基本信號也包含起始信號,ACK應答,結束信號,同時字節數據發送時,也是按照標準IIC的MSB First順序。

發送命令設置數碼管顯示工作參數

通信格式:起始信號,模式命令(1字節),顯示命令(1字節),結束信號

這個指令用于設置數碼管顯示的相關參數。例如亮度,7段或者8段顯示,顯示的開關。模式命令固定為0x48,而顯示命令則滿足以下格式:
圖片.png

3、設計思路

計時:因為勇士027系列dsp沒有硬件RTC模塊,所以只能使用硬件定時器來實現。使用cputimer0來設置1ms的周期中斷,在中斷里面進行計數,計數到1s后進行更新數碼管顯示。

暫停功能:利用按鍵s101來實現計數的暫停與繼續。

亮度調節功能:利用按鍵s102來實現數碼管亮度的調節

計數復位功能:利用按鍵s103來實現計數值的復位,從零開始計時

三、代碼編寫

main.c

#include "dsc_config.h"
#include 
#include "IQmathLib.h"
#include "sci.h"
#include "TM1650_IIC.h"
#include 

extern void InitKEY(void);
extern void InitLED(void);
void test(void);
Uint16 sec_rtc = 0;
Uint16 min_rtc = 0;
char keyReg = 0;

extern Uint32 msec_cnt;//用于計秒
extern volatile Uint8 msec_cnt_on;//0-on,1-off
int main(void)
{
	uint16_t cnt = 0;

	/*初始化系統控制:PLL,WatchDog,使能外設時鐘*/
	InitSysCtrl();
	/*初始化內存控制寄存器,使能內存流水線模式*/
	InitFlash();

	/*初始化串口通信的GPIO口*/
	/*GPIO28: SCIRXDA*/
	/*GPIO29: SCITXDA*/
	InitSciGpio();

	/*關閉中斷*/
	DINT;

	/*將PIE控制寄存器初始化為默認狀態,該狀態禁止所有PIE中斷并清除所有標志*/
	InitPieCtrl();
	/*禁止CPU中斷并清除所有中斷標志*/
	IER = 0x0000;
	IFR = 0x0000;
	/*初始化PIE向量表,為PIE向量表中的所有中斷向量配置對應向量的入口地址*/
	InitPieVectTable();
	/*SCI寄存器配置*/
	Scia_Config(9600);
	/*定時器0初始化*/
	Timer0_init();

	/*初始化IIC總線的Gpio*/
	InitI2C_Gpio();
	/*IIC初始化*/
	I2CA_Init();
	/*軟件復位IIC從設備*/
	softResetIIC_BUS();
	//printf("\r\nTM1650 init...");//標準C的printf輸出測試,串口調試助手設置波特率128000bps,ASCII格式顯示

	/*BIT6到BIT4為亮度調節,BIT0是  1 開啟/0關閉*/
	LigntVal = 0x11;
	/*1級亮度,開啟顯示*/
	TM1650_Send(CMD_SEG, LigntVal);
	/*DIG0-DIG3均顯示0*/
	TM1650_Send(DIG0, SEG7Table[0]);
	TM1650_Send(DIG1, SEG7Table[0]);
	TM1650_Send(DIG2, SEG7Table[0]);
	TM1650_Send(DIG3, SEG7Table[0]);

	/*使能外部中斷和CPU中斷*/
	EINT;

	/*初始化KEY、LED*/
	InitKEY();
	InitLED();

	/*通過SCI發送字符串*/
	Scia_Print("Hello haawking!\r\n");
	while(1)
	{
		if((CpuTimer0.InterruptCount % 250) == 0)
		{
			/*TM1650獲取掃描按鍵S101 S102 S103,控制數碼管數字顯示及亮度調節*/
			TM1650_Read(CMD_KEY, &keyVal);

			/*S101按下時,開始/暫停計時*/
			if(keyVal == 0x44)
			{
				msec_cnt_on ^= 0x01;
				uart_printf("msec_cnt_on = %d\r\n",msec_cnt_on);
			}
			/*S102按下時,改變數碼管顯示亮度*/
			if(keyVal == 0x4c)  //
			{
				/*高四位為亮度調節,最后1位是開啟、關閉顯示*/
				LigntVal = (LigntVal + 0x20) & 0x7F;

				/*1級亮度,開啟顯示*/
				TM1650_Send(CMD_SEG, LigntVal);
				uart_printf("LigntVal = %d\r\n",LigntVal);
			}

			/*按下S103時*/
			if(keyVal == 0x54)
			{
				msec_cnt = 0;
				sec_rtc = 0;
				min_rtc = 0;
				keyReg = 0;

				/*DIG0-DIG3清零*/
				TM1650_Send(DIG0,SEG7Table[0]);
				TM1650_Send(DIG1, SEG7Table[0]);
				TM1650_Send(DIG2, SEG7Table[0]);
				TM1650_Send(DIG3, SEG7Table[0]);

				/*D400翻轉*/
				GpioDataRegs.GPATOGGLE.bit.GPIO7 = 1;
				uart_printf("cnt reset\r\n");
			}
		}

		/*間隔為1000ms*/
		if(msec_cnt >= 1000)
		{
			/*定時器0中斷次數清零*/
			msec_cnt = 0;

			/*D401翻轉*/
			GpioDataRegs.GPATOGGLE.bit.GPIO6 = 1;

			/*Tmp累加,從0-999循環*/
			sec_rtc++;
			if(sec_rtc >= 60)
			{
				sec_rtc = 0;
				min_rtc++;
				if(min_rtc >= 100)
				{
					min_rtc = 99;
					sec_rtc = 59;
				}

			}

			//分鐘十位
			TM1650_Send(DIG0,SEG7Table[min_rtc / 10]);
			/*分鐘各位*/
			TM1650_Send(DIG1, SEG7Table[min_rtc % 10]);

			/*秒十位*/
			TM1650_Send(DIG2, SEG7Table[sec_rtc / 10]);
			/*秒個位*/
			TM1650_Send(DIG3, SEG7Table[sec_rtc % 10]);
		}
	}

	return 0;
}

// ----------------------------------------------------------------------------

timer.c

/******************************************************************
 文 檔 名:     epwm.c
 D S P:       DSC28027
 使 用 庫:
 作     用:
 說     明:      提供timer接口初始化配置
 ---------------------------- 使用說明 ----------------------------
 功能描述:


 版 本:V0.0.3
 時 間:2022年1月19日
 作 者:
 @ mail:support@mail.haawking.com
 ******************************************************************/
#include "dsc_config.h"
#include "TM1650_IIC.h"
#include "timer.h"

timer0 timer0Base;
volatile uint32_t Tick;
Uint32 msec_cnt = 0;//用于計秒
volatile Uint8 msec_cnt_on = 0;//0-on,1-off
/******************************************************************
 *函數名:Timer0_init
 *參 數:無
 *返回值:無
 *作 用:初始化Timer
 ******************************************************************/
void Timer0_init()
{
	/*初始化Cpu定時器*/
	InitCpuTimers();

	/*開啟模塊中斷使能,位于 Timer->RegsAddr->TCR.bit.TIE = 1;
	 120MHz,1000us ,即為 1ms中斷周期*/
	ConfigCpuTimer(&CpuTimer0, 120, 1000);
	/* 使能中斷*/
	CpuTimer0Regs.TCR.bit.TIE = 1;
	/* 開始計時*/
	CpuTimer0Regs.TCR.bit.TSS = 0;

	/*重映射中斷服務函數*/
	EALLOW;
	PieVectTable.TINT0 = &cpu_timer0_isr;
	EDIS;
	/*連接CPU中斷Y*/
	IER |= M_INT1;
	/*連接Y中斷里的第幾位*/
	PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
}
/******************************************************************
 *函數名:INTERRUPT void cpu_timer0_isr(void)
 *參 數:無
 *返回值:無
 *作 用:CPU 定時器0 中斷服務函數
 ******************************************************************/

INTERRUPT void cpu_timer0_isr(void)
{
#if 0
	timer0Base.msCounter++;
	timer0Base.Mark_Para.Status_Bits.OnemsdFlag = 1;

	Tick++;
	/*中斷響應*/
	EALLOW;
	PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
	EDIS;

#endif

	/*定時器0中斷次數累計*/
	CpuTimer0.InterruptCount++;
	if(msec_cnt_on == 0)
	{
		msec_cnt++;
	}

	/*檢測IIC模塊狀態為空閑還是寫入*/
	char i;

	for(i = 0; i < IIC_NODE_NUM; i++)
	{
		PtrMsg[i]->IIC_TimerOUT = (PtrMsg[i]->MasterStatus == IIC_IDLE) ? 0 : (PtrMsg[i]->IIC_TimerOUT + 1);
	}

	/*通知可以接收第一組中斷的所有中斷*/
	PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計時器
    +關注

    關注

    1

    文章

    397

    瀏覽量

    32238
  • 中科昊芯
    +關注

    關注

    5

    文章

    73

    瀏覽量

    5069
  • 開發板試用
    +關注

    關注

    3

    文章

    299

    瀏覽量

    1957
收藏 人收藏

    評論

    相關推薦

    Start_DSC28034PNT湖人開發板免費體驗】Start_DSC28034PNT湖人開發板RS232 通信

    Start_DSC28034PNT湖人開發板| 官網鏈接 [start28034湖人開發板_北京中科
    發表于 09-12 12:34

    Start_DSC28034PNT湖人開發板免費體驗】Start_DSC28034PNT湖人開發板上電測試

    Start_DSC28034PNT湖人開發板| 官網鏈接 [start28034湖人開發板_北京中科
    發表于 09-12 12:09

    Start_DSC28034PNT湖人開發板免費體驗】Start_DSC28034PNT湖人開發板開箱視頻

    | 官網鏈接 [start28034湖人開發板_北京中科科技有限公司] 官網圖片發布是這樣: 實物收到后有些出入:今天為大家介紹以下
    發表于 08-23 00:17

    Start_DSC28034PNT湖人開發板免費體驗】Start_DSC28034PNT湖人開發板初體驗

    官網鏈接 start28034湖人開發板_北京中科科技有限公司 官網圖片發布是這樣: 實物收到后有些出入:! 微信圖片_2023082
    發表于 08-23 00:14

    Start_DSC28034PNT湖人開發板免費體驗】開發板使用2

    接上文 【Start_DSC28034PNT湖人開發板免費體驗】開發板使用1 | # 導入工程選擇從下載的demo:H:\\\\武漢源CW32飯盒派\\\\
    發表于 08-19 10:11

    Start_DSC28034PNT湖人開發板免費體驗】中科Start_DSC28034PNT PWM測試

    中科Start_DSC28034PNT PWM測試 本次測試主要對PWM進行測試,嘗試使用DSP的PWM模塊完成呼吸燈控制功能。 一、硬件連接 通過原理圖可以看出,通過PWM控制呼
    發表于 08-05 19:40

    Start_DSC28034PNT湖人開發板免費體驗】開發板使用1

    提取碼:yjyx | # 導入工程選擇從下載的demo:H:\\\\武漢源CW32飯盒派\\\\中科Start_DSC28034PN
    發表于 08-04 18:10

    Start_DSC28034PNT湖人開發板免費體驗】+開箱+軟件

    感謝 發燒友學院以及中科提供產品Start_DSC28034PNT湖人開發板 打開快遞封裝的外包裹袋,里面有2個盒子。打開后是
    發表于 08-04 14:31

    Start_DSC28034PNT湖人開發板免費體驗】開發板初探與開發環境搭建

    /hx2000-examples/tree/master/DSC28034/HXS320F28034CDD/Start_DSC28034 三. 開發板介紹 查看官方網站http://haawking.com
    發表于 08-01 22:31

    Start_DSC28034PNT湖人開發板免費體驗】開發環境搭建

    資源下載 總的資源,我放在自己的阿里云盤了,就是下面的三個地方的合集 中科Start_DSC28034PNT開發板 https://ww
    發表于 07-30 16:27

    Start_DSC28034PNT湖人開發板免費體驗】(開源)控制機械臂小游戲3

    Start_DSC28034PNT湖人開發板免費體驗】定時控制數字舵機 【Start_DSC28034PNT湖人開發板免費體驗】1初識
    發表于 07-30 14:48

    Start_DSC28034PNT湖人開發板免費體驗】1初識中科

    感謝 中科 感謝 電子發燒友社區 板子非常漂亮! 做工精良。 配套設施完善。 細節到位。 自研軟件。 界面優良。
    發表于 07-18 00:52

    中科Start_DSC28034PNT開發板開箱體驗

    中科Start_DSC28034PNT開發板開箱體驗: 1.開發板開箱 jtag燒寫口/us
    發表于 07-13 10:47

    Start_DSC28034PNT湖人開發板免費體驗】中科Start_DSC28034PNT開箱測試

    中科Start_DSC28034PNT開箱測試一、Haawking-IDE安裝與環境搭建1、 在中科
    發表于 07-09 23:12

    Start_DSC28034PNT湖人開發板免費體驗】+兩種版本開發板的比較

    從收集的資料及手頭的開發板來看Start_DSC28034PNT湖人開發板應有兩種版本,且存在的差異還比較大,為此對其加以相應的比較。
    的頭像 發表于 07-07 09:03 ?529次閱讀
    【<b class='flag-5'>Start_DSC</b>28034PNT湖人<b class='flag-5'>開發板</b>免費體驗】+兩種版本<b class='flag-5'>開發板</b>的比較
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>