2018年4月2日 星期一

CSR8635 藍芽立體聲喇叭設計

CSR8635是ROM版的藍芽立體聲 BT4.0模組,如下圖。
CSR8635.jpg
利用這顆模組來設計立體聲藍芽喇叭,這顆模組功能強大,只要設定一些參數,燒錄到EEPROM,就可以動作了。藍芽喇叭的方塊圖,如下。
方塊圖_
做好的機板如下圖。
BTA-01_
藍芽模組的電路圖,如下。
BT-schematic_
CSR8635是利用SPI界面來燒錄設定值,請注意藍芽模組的PIN16(SPI)需要接1V8 HIGH電位,才可以進入SPI模式,不然無法燒錄。
CSR8635類比輸出是差動訊號,經由DRV602轉成類比聲音訊號,再到PAM8403經由喇叭放大出來,如下電路圖。
Audio-SCH_



#CSR #CSR8635 #藍芽 #藍芽立體聲喇叭 #電子外包 #PCB LAYOUT #電子設計 #學生專題製作#電路設計

2016年10月6日 星期四

NUCLEO-F030R8開發板利用STM32CubeMX來設定Timer中斷副程式

利用STM32F030R8的開發板NUCLEO-F030R8來設計Timer中斷副程式,是利用STM32CubeMx的軟體來產生程式Project。

1.打開STM32CubeMX軟體,點選New Project。

2.點選Board Selector,選擇NUCLEO-F0308,按OK鍵。

3.選擇TIM1,Clock Source 選擇Internal Clock。 

4.設定內部Clock,因TIM1使用APB1作為clock source,所以可以確認Clock為48MHz。 

 5.點選Configuration的TIM1。 

6.STM32F030R8的CPU為48MHz,TIM1CLK為48MHz。若要將Counter Clock設定為10KHz,
則Prescaler應該設定為(System Core Clk / 10KHz)-1 = 4799。 
若要產生每一秒中斷一次,頻率也就是1Hz。Update Rate為1Hz,依照公式可得出:
Update Rate = 1Hz = Counter Clock / (ARR+1) = 10KHz / (ARR+1)  。
可算出ARR = 9999 ,並把Prescaler填入4799,Counter Period填入9999。

7.NVIC Settings 選項內,TIM1interrupts Enabled打勾。


8.在Project Settings選擇程式編輯的軟體。這裡是選擇MDK-ARM V5(Keil)來編輯。


9.Project / Generate Code來產生Project Code,打開Project,在main.c內的/* USER CODE BEGIN 2 */後面加上HAL_TIM_Base_Start_IT(&htim1);來啟動TIM1。 


10.在Main.c內,/* USER CODE BEGIN 4 */與/* USER CODE END 4 */之間,
填入void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)函式 ;如下
/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
          HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin); 
}
/* USER CODE END 4 */
程式動作是LED每1秒閃爍一次。

STM32CubeMX Timer中斷教學錄影

2016年9月29日 星期四

8x8矩陣LED驅動電路圖與source code

8x8矩陣LED驅動電路設計架構,主要由一顆STM32L031K6 ST MCU來控制,以掃描方式來一顆顆點亮LED,用一顆CR2032鈕扣電池就可以驅動,可以連續動作20個小時,下面圖式是8x8矩陣LED電路圖,電路架構很單純,就是一般的GPIO來控制矩陣LED。

接下來就是介紹8x8矩陣LED驅動的Source code介紹。

void All_ROW_H(void)
{
LED_ROW_A_H();
LED_ROW_B_H();
LED_ROW_C_H();
LED_ROW_D_H();
LED_ROW_E_H();
LED_ROW_F_H();
LED_ROW_G_H();
LED_ROW_H_H();
}
void All_ROW_L(void)
{
LED_ROW_A_L();
LED_ROW_B_L();
LED_ROW_C_L();
LED_ROW_D_L();
LED_ROW_E_L();
LED_ROW_F_L();
LED_ROW_G_L();
LED_ROW_H_L();
}
void All_COL_H(void)
{
LED_COL_A_H();
LED_COL_B_H();
LED_COL_C_H();
LED_COL_D_H();
LED_COL_E_H();
LED_COL_F_H();
LED_COL_G_H();
LED_COL_H_H();
}
void All_COL_L(void)
{
LED_COL_A_L();
LED_COL_B_L();
LED_COL_C_L();
LED_COL_D_L();
LED_COL_E_L();
LED_COL_F_L();
LED_COL_G_L();
LED_COL_H_L();
}

void Select_Turn_On_LED(uint8_t ROW,uint8_t COL)
{
All_ROW_L();
All_COL_H();
switch(ROW)
{
case 1 :
LED_ROW_A_H();
break;

case 2 :
LED_ROW_B_H();
break;

case 3 :
LED_ROW_C_H();
break;

case 4 :
LED_ROW_D_H();
break;

case 5 :
LED_ROW_E_H();
break;

case 6:
LED_ROW_F_H();
break;

case 7 :
LED_ROW_G_H();
break;

case 8 :
LED_ROW_H_H();
break;

default :
break;
}
switch(COL)
{
case 1 :
LED_COL_A_L();
break;

case 2 :
LED_COL_B_L();
break;

case 3 :
LED_COL_C_L();
break;

case 4 :
LED_COL_D_L();
break;

case 5 :
LED_COL_E_L();
break;

case 6:
LED_COL_F_L();
break;

case 7 :
LED_COL_G_L();
break;

case 8 :
LED_COL_H_L();
break;

default :
break;
}

Wait_delay(100);
}

void Smile_Face(void)
{
Select_Turn_On_LED(1,4);
Select_Turn_On_LED(1,5);
Select_Turn_On_LED(2,1);
Select_Turn_On_LED(2,2);
Select_Turn_On_LED(2,5);
Select_Turn_On_LED(2,6);
Select_Turn_On_LED(3,1);
Select_Turn_On_LED(3,2);
Select_Turn_On_LED(3,6);
Select_Turn_On_LED(3,7);
Select_Turn_On_LED(4,6);
Select_Turn_On_LED(4,7);
Select_Turn_On_LED(5,6);
Select_Turn_On_LED(5,7);
Select_Turn_On_LED(6,1);
Select_Turn_On_LED(6,2);
Select_Turn_On_LED(6,6);
Select_Turn_On_LED(6,7);
Select_Turn_On_LED(7,1);
Select_Turn_On_LED(7,2);
Select_Turn_On_LED(7,5);
Select_Turn_On_LED(7,6);
Select_Turn_On_LED(8,4);
Select_Turn_On_LED(8,5);
}
void main(void)
{
     HAL_Init();

     /* Configure the system clock */
     SystemClock_Config();

     /* Initialize all configured peripherals */
     MX_GPIO_Init();
     MX_TIM2_Init();
     while(1)
    {
           Smile_Face();
     }
}


2016年3月24日 星期四

Kinetis Design Studio 安裝流程

Kinetis Design Studio 是免費的開發軟體,但只有支援Kinetis MCU,其他MCU,像是ColdFire等MCU是不支援。
Kinetis Design Studio的介面與之前Freescale codewarrior很像,有使用過codewarrior應該很快就可以適應Kinetis Design Studio的編輯環境。
接下來就是Kinetis Design Studio的安裝介紹,有幾個軟體要去安裝。

1.先安裝Kinetis Design Studio V3.0.0軟體。
下載路徑: http://www.nxp.com/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/kinetis-design-studio-integrated-development-environment-ide:KDS_IDE#

2.再安裝Kinetis Software Development Kit (SDK)  , Kinetis SDK 1.3 Mainline版本。
下載路徑 : http://www.nxp.com/products/software-and-tools/run-time-software/kinetis-software-and-tools/development-platforms-with-mbed/software-development-kit-for-kinetis-mcus:KINETIS-SDK。

3.安裝KSDK_1.3.0_Eclipse_Update,執行Kinetis Design Studio軟體。
a. Select "Help" -> "Install New Software".








b.In the Install New Software dialog box, click the "Add" button in the upper right corner. Then, in the Add Repository dialog, select the "Archive" button.

















c.路徑在C:/Fresscale/KSDK_1.3.0/tools/eclipse_update/KSDK_1.3.0_Eclipse_Update.zip.
d.Click "Open", and the "OK" button in the Add Repository dialog box.
e.The KSDK update shows up in the list of the original Install dialogs.

4.安裝其他軟體,執行Kinetis Design Studio軟體。
a. Select "Help" -> "Install New Software".

b.在Work With 選擇Freescale KDS Update Site - http://freescale.com/lgfiles/updates/Eclipse/KDS





















c.點選Select All ,按NEXT去完成安裝。



5.Check for Updates.檢查是否有更新軟體。













完成以上軟體的安裝,Kinetis Design Studio動作才會正常。

2014年11月12日 星期三

推薦 ~ 2FreeHosting 免費虛擬主機,20GB空間+150GB流量,cPanel控制版面 。

現在免費虛擬主機可以說是非常的多,但哪個擁有「大空間」、「不亂刪帳號」又「穩定」呢?為了選一個符合以上條件的空間,花了非常多的時間在這上面,試過了許多免費虛擬主機。2FreeHosting是一個還不錯的免費虛擬主機供應商,這家主機商非常適合放網站,架設WordPress等。 2FreeHosting提供了免費20GB的儲存空間、150GB流量/月,以及電子信箱帳號等,儲存空間部分可以不用擔心,流量部分150GB也非常足夠使用了,如果用來架設WordPress是絕對足夠使用的!2FreeHosting也支援自訂網域名稱,當然也有免費的子網域可以使用,主機控制版面是cPanel,非常好使用,當然2FreeHosting也提供了電子信箱服務,可以新增10個電子信箱帳號,信箱空間應該是算在20GB內,如果您想開始經營一個部落格,2FreeHosting會比您自架還來的節省成本、穩定!值得推薦給大家!


2FreeHosing 資訊

網站網址 : http://api.2freehosting.com/
免費空間 : 20GB
流量限制 : 150GB / 月
強制廣告 : 無
控制版面 : cPanel
網站註冊 : http://api.2freehosting.com/

2FreeHosing註冊教學

第一步
連結註冊網頁 : http://api.2freehosting.com/
第一格空白 : 英文名字
第二格空白 : Email信箱
第三格空白 : 設定密碼
第四格空白 : 確認密碼
第五格空白 : 輸入驗證碼
按  Sign Up  開始註冊。
如下圖示

第二步

到Email信箱點擊驗證信中的連接來激活帳號 .
這樣就完成註冊的動作。








2014年11月5日 星期三

在blogger文章上加上Facebook 「讚」(like)與 Google Plus +1 按鈕

目前最流行社交網站就是Facebook 與Google+,許多網站現在都會與這些熱門的社交網站結合,增加網站的流量與知名度。

這篇文章要介紹如何在blogger文章加上Facebook [讚]與Google Plus +1按鈕 , 按步驟去修改,就可以簡單而快速增加此功能。



STEP1:
到Blogger管理介面的[範本],點選右上角的[備份/還原],進入之後點選[下載完整範本],並儲存下載檔案,就完成網站備份的動作。




STEP2:
下載的檔案是個XML檔,使用文字編輯軟體來打開。在檔案中找尋「</head>」,然後在這個 </head> 之前的</b:temolate-skin>之後加入 Google Plus +1 按鈕要使用的的程式碼:
  </b:template-skin>
  <!-- Begin: Add by ethanwu -->
  <!-- Google Plus +1 button -->
  <!-- Place this tag in your head or just before your close body tag. -->
  <script src='https://apis.google.com/js/plusone.js' type='text/javascript'>
    {lang: &quot;zh-TW&quot;}
  </script>
  <!-- End: Add by ethanwu -->
</head>
程式碼中用 <!-- 與 --> 夾起來的部分(紅色)都是註解,而 Begin: Add by ethanwu 與 End: Add by ethanwu 之間程式就是要加進去的。

SETP3: 

接下來就是按鈕的擺放位置,這個範例是把按鈕放在文章標題的下方,首先尋找「<div class='post-header'>」,這個 div 就是專門將小工具放在文章標題下方的用的,但是在管理界面中沒辦法放置自定的按鈕。

一樣加入 Begin: Add by ethanwu 與 End: Add by ethanwu 之間的程式碼。

<div class='post-header'>
  <div class='post-header-line-1'/>
  <!-- Begin: Add by ethanwu -->
  <b:if cond='data:blog.pageType != &quot;static_page&quot;'>
    <div class='socialMediaHeader'>
      <!-- facebook like button -->
      <iframe allowTransparency='true' expr:src='&quot;http://www.facebook.com/plugins/like.php?href=&quot; + data:post.canonicalUrl + &quot;&amp;send=false&amp;layout=button_count&amp;show_faces=false&amp;width=90&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=21&quot;' frameborder='0' scrolling='no' style='border:none; overflow:hidden; width:90px; height:21px;'/>

      <!-- Google Plus +1 button -->
      <!-- Place this tag where you want the +1 button to render. -->
      <div class='g-plusone' data-size='medium' expr:data-href='data:post.canonicalUrl'/>
    </div>
  </b:if>
  <!-- End: Add by ethanwu -->
</div>
這個程式碼主要包含了 Facebook 與 Google Plus +1 兩部分,上半部的 iframe 部分是 Facebook 所使用的,下半部的 div 則是 Google Plus +1 按鈕,兩個按鈕用<div class='socialMediaHeader'> 包起來,這樣可以方便微調按鈕的位置。

SETP4 :
最後一步驟,到Blogger管理介面的[範本],點選右上角的[備份/還原],把修改之後的檔案上傳回去,就完成了。




2014年3月18日 星期二

Bluetooth Keyboard & Mouse schematic 藍芽3D鍵盤滑鼠電路圖

今天來介紹藍芽Keyboard / Mouse硬體電路,滑鼠功能是由陀螺儀及G-Sensor計算出來數值,藍芽是選用ISSC BM1652模組,是顆HID Bridge 藍芽模組,有包含HID Profile。 

規格

  • Bluetooth V3.0 class2
  • 兩顆3號乾電池
  • 藍芽指示燈
  • 電源指示燈
  • 陀螺儀
  • G-Sensor
  • 具有Keyboard功能
  • 具有Mouse功能


方塊圖

電路圖介紹
*昇壓線路:
使用TI TLV61220 ,INPUT 電池電壓,OUTPUT 3.3V。 

*電池電壓偵測:
讀取電池電壓,經由ADC轉換,讓MCU判斷電池電壓,當電壓低於2.4V時,低電壓LED會亮起。
*單晶片:
是選用LPC1114 ,32KB Flash.50 MHZ ARM Cortex-M0 MCU.



*G-Sensor
是選用ADXL345,G-Sensor主要用意是計算產品傾斜角度。

*陀螺儀:
用來計算滑鼠移動量。
*HID Bluetooth Module
選用ISSC BM1652 HID Bluetooth Module.
*Key Scan
按鍵掃描,來針側按鍵是否有做動。

完整電路圖:下載