2008年10月15日 星期三

MCU 系統周邊應用範例


以前啊...或是說幾年前啊..

一般MCU(尤其是台製的!),要產生一些系統應用周邊介面時,像是SPI..I2C...或是PWM等!

都是很辛苦的...因為台灣這些IC設計公司都有點過份的CostDown...

他們的MCU都不提供這些介面!

然後呢?!...就拗工程師們利用一般I/O 搭配僅有的 Timer 啊...

硬是要搞出一個PWM或是I/O 型的UART....!

而且因為要搶執行效能(因為台製的MCU就算是OTP...他們的執行效能也都侷限在16 MHz以下,

甚至只有8 MHz 而已!),所以,堅決要求工程師們用組合語言寫程式...

這也不能怪這些老闆或是工程師們...這畢竟是死馬當活馬醫的『權衡之計』啊!

因為很簡單...就是便宜啊-----這是所有這些人嘴巴講出來的藉口!

所以,往往這種現象就是發生在一些量比較少,或是一時緊急需求的案例!

只好從一些比較成熟,而大家比較熟悉的MCU去搞這些啊...

像是8051 硬是要從Timer 中去擠出一些PWM 應用功能...

----

但是呢?!...以真正的一些標準大宗應用市場呢?!或是以目前IC晶圓技術來說...

應該還是講求所謂的 ASSP IC ,就是儘量的包進一些系統應用周邊回路!

之前,在部落格裡有舉例過...現在因為大家儘量走高階晶圓代工,

所以以IC設計來說...

要達到一定的經濟規模來說:可能要進塞一些回路以達到Core Limit/與Pad Limit 平衡!

所以啊....這幾年來:國外這些MCU 大廠...也都盡量在一些MCU裡塞一些所謂的 I2C/SPI...等回路!

因為他們就是以大角度的市場分析來看:從晶圓代工到市場操作...

我MCU量越大,我就可爭取更好的晶圓代工條件...我就又可以提高MCU與豐富MCU周邊支援!

就算價格比一般台製高一點...但人家卻可以支援比較豐富的應用條件...縮短系統應用開發時間!

都是在在的顯示市場操作條件之不同的思維模式!

----

如果大家還體會不到這樣子的應用感覺的話...我就舉一個簡單的範例:

之前我有舉過那個三相馬達應用的例子嗎?!...有提過有關用軟體造PWM之系統瓶頸嗎?!

...

大家可以想像一下:如果您要用一般MCU 的軟體造PWM...您可以"ㄍㄧㄥ"到多快?!

這一點就不必再一次強調了。...也更不用說:您用組合語言要花多少時間整理排序您的Timer...

這些辛苦的工作...換來的....只是被客戶吐嘈一句:您的系統跑起來怪怪的哩!

(結果呢?!一棵小小的MCU 才幾K的ROM Size 就被這些指令快擠爆了!)

但是呢?...如果您是用那些直接支援周邊回路的ASSP MCU呢?!...

...

void PCA_Init()
{
   PCA0CN    = 0x00;        // PCA Counter/Timer enabled.
    PCA0MD    = 0x08;        // PCA Timebase Input Options:
                                             // 0x00 : System clock divided by 12
                                            // 0x02 : System clock divided by 4
                                           // 0x04 : Timer 0 overflow
                                          // 0x08 : SYSCLK
                               
    PCA0CPM0  = 0x42;        // PWM Enable, Comparator Function Enable.
    // Configure initial PWM duty cycle = 30%
    PCA0CPH0 = 256 - (256 * 0.3);


    PCA0CPM1  = 0x42;        // PWM Enable, Comparator Function Enable.
    // Configure initial PWM duty cycle = 70%
    PCA0CPH1 = 256 - (256 * 0.7);

    PCA0CPM2  = 0x42;        // PWM Enable, Comparator Function Enable.
    // Configure initial PWM duty cycle = 50%
    PCA0CPH2 = 256 - (256 * 0.5);

   // Start PCA counter
   CR = 1;

}
...

您看就不到十個指令...還是用C寫的...答案一目了然....

結果我們從示波器看結果:

就是三組 分別為30% 、50%及70% 的PWM訊號...

這不就是現在所謂講求IC 設計評價化與平易近人的作法嗎?!...

您還要養多少工程師?!請工程師花多少時間來熟悉您的MCU啊?!

...

------

       我為什麼要提這樣子的例子呢?!...因為上回我有提過:...

您是要賣零件呢?!還是要賣技術(系統應用整合技術?!)...

您哪有那麼多時間在玩這些小細節呢?!...人家IC賣給您,就是要讓您簡單上手啊...

您搞了老半天還不能出貨?!...還想賣零件賺錢?!...搞不懂呢....

更何況...人家IC零件賣給您...也會賣給大陸人...那您自認您自己的價值在哪?!

>>>>

這是上回去大陸出差時,在機場巧遇一位昔日IC 設計大公司的大業務...

人家很關心的問一下以前我在玩那個多核心的觀點...

當然,解釋起來就是前述那種類似系統應用的看法....結果:這位資深的大業務只說了一句:

人家開IC,目的就是出大量,賺錢啊...人家客戶要什麼?!...就直接開一棵給客戶就對了。

還要客戶用MCU寫什麼介面?! ...根本在害客戶而不是在幫客戶!

>>>

剎那間有點提醐灌頂...對啊...人家現在搞電子的價值...應該要提升到系統整合價值...

我們以系統觀點來看:我們的技術門檻應該不是用哪一家的IC?!...

而是我們用IC兜出怎樣價值的系統....

因為現在連客戶都很精了!

 他們都跟您說:您就用哪家IC啊~或是哪家IC啊...就好了啊!

我都說:您都知道誰的IC...那幹嘛還找我啊?! ...

他們還煞有其事的說:....當然還是要看我們可以從系統應用觀點可以創造出怎樣的價值啊!

----

下回,我在舉一個例子來說明這樣子的觀點!

 

 

 

5 則留言:

  1. 真是一語命中要點,
    是在解決問題?
    還是用,
    問題創造問題?
    久沒來逛,文章又累積一推了,今天可要慢慢讀完!

    回覆刪除
  2. 賈老師的真老公2009年1月5日 下午1:31

    不錯...引述的結論很好...
    我在survey MCU方案時,是在解決問題?還是在創造問題?!

    尤其是MCU 的應用市場,人家為什麼要搞那些所謂的Compatible 的MCU呢?!
    就是怕原來用的IC停產或是原來供應商倒了?!
    我自己後來在要交貨時,才驚覺這個問題嚴重:因為人家下游動不動要您出IC 出產的一堆文件資料!
    所以啦...太冷門的...交貨期不明確的...就"謝謝再聯絡"...
    MCU 喔...能用普遍一點,容易取得的或是可以在系統上可以轉換的...還是比較好的!

    回覆刪除
  3. 請問大哥,該如何切入這一塊的工作?我的背景是資工。

    回覆刪除
    回覆
    1. 很簡單,先找一個自己很想搞的題材,
      直接切入去把他做出來,不懂的就問人家,
      最好是您覺得有賣點,直接找人合作把他創造商機!
      否則,若只是想學會之後,"換工作容易一點的話",
      那就不如多花一點時間多陪家人,
      如果,還有空閒的話,那就多交一點朋友,多認識多一點朋友,
      讓自己現有的技能專長能發揮還比較實際一點!
      真的!....相信我說的!
       

      刪除
  4. 因為目前我在一家光電廠做 CAD Engineer,因為離家有點距離,所以想找中壢工業區的工作。但是中壢工業區同性質的工作沒有,所以才會想轉行。

    回覆刪除