มาแชร์ประสบการณ์บางส่วน กับ STM8/32

  • 6 Replies
  • 1693 Views
*

Offline TaoTao

  • ***
  • 239
    • View Profile
ขอเกริ่นก่อน ย้อนไป ประมาณ 2-3 ปีก่อนนี้ ใช้ของเจ้าอื่นอยู่ แบบ snakeๆ fishๆ หลายยี่ห้อเลย ซื้อมาร่วม 1 พันตัว(เขียนไม่ผิดครับ) สักพักนึง หันมามอง STM8/32 เพราะตกใจในราคาเมืองนอกที่ถูกมาก เมื่อเทียบกับ Feature เครื่องมือก็ถูกดี และเนื่องด้วย ตัวถังเค้า จะเป็นพวก LQFP เกือบทั้งหมด ซึ่งผมชอบเป็นพิเศษ เหมาะกับทำ Product มาก กระทัดรัด ไม่กินที่ เลยเริ่มศึกษา และใช้งานอย่างจริงจัง จนตอนนี้ เรียกว่าใช้งานมันได้ จนเกือบครบทุก Feature เค้าแล้ว สรุปเลยว่าชอบครับ ของเค้าดีจริง

STM8 หรือแม้กระทั่ง STM32 หลายๆ ตระกูล ถ้าหวังว่า LIBRARY จะใช้งาน ง่าย จบงานง่าย ทุก Feature ผมว่า มองผ่านได้เลยครับ STM มันไม่ง่ายขนาดนั้น แต่ก็ไม่ยากจนเกินไป ซึ่งผมมั่นใจ 100% เลยครับ ว่า ผมเข้าใจถูกต้อง เพราะอะไรน่ะหรือ ? เดี๋ยวเฉลยตอนท้ายๆ ครับ มีเอกสารจากทางผู้ผลิตเองยืนยันด้วย

เข้าเรื่องเลยครับ หากสนใจ จะใช้งานเจ้า STM8/32
ผมแนะนำ เข้าเว็บ ST.COM เลยครับ อ้อ แต่เดี๋ยวนี้ อาจสะดวกขึ้น อีกทางเลือกที่ง่ายขึ้น คือ

ถ้าคุณใช้มือถือหุ่นกระป๋อง โหลดแอป ST MCU FINDER จาก PlayStore ได้เลยครับ ชีวิตท่านจะง่ายขึ้น แอปนี้.. ทำให้เราเลือก MCU ได้ตรงตามความต้องการ เช่นว่า เราต้องการใช้งานอะไรในตัว MCU ที่เด่นๆ ใช้จำนวนเท่าไหร่ กี่ pin แอปนี้ เราจะรู้เบอร์ที่จะใช้ได้ทันที พร้อมทั้ง Link ไปยัง Dev Board - เอกสาร และซอฟแวร์ ที่จะต้องใช้ให้โหลดด้วย สะดวกคอตๆ เลย แถมบอกราคาไว้ด้วย

สมมติว่า หากต้องการใช้ในโปรเจคย่อมๆ ไม่ได้ประมวลผลซับซ้อนอะไรมากมาย STM8 ผมว่าก็ไม่เลว เพราะราคาถูก เสถียรภาพสูงมาก ทั้งทางความร้อน สนามไฟฟ้า สนามแม่เหล็ก เท่าที่ผมใช้มา มันไม่เคย รีสตาร์ทเองเลย ซึ่งถ้ามี ผม-เพื่อนๆ-และอีกหลายคน คงม่องไปแล้ว เพราะมันอยู่ในรถจุดที่สำคัญมากๆ จริงๆ อันนี้น่าประทับใจ โค้ด 8 bits ก็ดูง่าย สะอาดตามากกว่า 32 bits ตระกูลที่หาง่ายๆ ทั่วไป ก็ 8S เบอร์ยอดฮิต อย่างเช่น STM8S103K3 (มีบอร์ดมินิ ของไชเน่าด้วย ราคาไม่ถึงร้อย  :o)

ถ้าเน้น กินกระแสไฟต่ำมากๆ ก็ต้องพวก ULTRA LOW POWER เลย เพราะ QUIESCENT จะต่ำเป็นพิเศษ (โหมด Active Halt / Halt ผมวัดจริงมา กินกระแสเพียง 1-2 uA  อันนี้น่าทึ่งมาก ใกล้เคียงดาต้าชีทเลย :o) ได้แก่ ตระกูล 8L, 8AL 32 bits ก็ 32L เช่น STM8L152C6T6 48 pin 25 analog i/p (แต่แปลก 32 bits เค้า ขาอนาลอก น้อยกว่า 8 bits มาก แค่ 10 pin เอง ในตัวถังเดียวกัน เสียดาย ๆ :-[)

หลังจาก ได้ตระกูล และเบอร์ MCU ที่ต้องการแล้ว และกำลังจะ เริ่ม.. พัฒนาต่อ

ถ้าไม่ได้โหลดจาก แอป
ที่เว็บ ST.COM จะมี IDE และทุกๆ สิ่งให้ครบเลย ถ้าชอบ ฟรี แบบ Unlimit สำหรับ STM8 : IDE + Complier ก็ Cosmic ครับ แต่ License ต้องเมล์ไปขอเค้าทุกปี อีกทางเลือก ก็ IAR เจ้านี้ ให้ฟรี 8kB สำหรับ 8 bit และ 32 kB สำหรับ 32 bits ลงคอมได้ 1 เครื่อง แต่ไม่ต้องขอ License ทุกปี จริงๆ มี IDE อีกเจ้า แต่จำไม่ได้ละ หลักๆ ผมใช้ 2 เจ้าที่บอกไป และ 32 bits เอง มีอีกเจ้า น่าใช้เลย คือ KEIL ครับ สำหรับตระกูล ARM สำหรับงานที่เน้น Performance

จากนั้นก็โหลด STVP มาด้วย เพื่อเอาไว้ Burn Chip  อันนี้ ใช้ได้ทั้ง 8/32 bit ในซอฟแวร์เดียว ดีบักผ่านทาง ST-LINK-V2 ครับ ของแท้ก็ถูก พันกว่าบาท ของกุ๊กกุ๊กกู๋-ไชเน่า ก็ร้อยกว่าสองร้อย ใช้ได้เหมือนกัน

เมื่อจะเริ่ม โคด อันดับแรก โหลด Library เค้ามา(โหลด จาก แอป หรือ เวป ก็ได้) จะมี ตัวอย่างเยอะแยะ ทุก FEATURE และ Templete พร้อมเลย ซึ่ง LIBRARY เค้า เหมาะกับเอามาช่วยเรา initial เท่านั้นนะครับ งานจริง เราอาจต้อง implement เครื่องมือมาใช้เองบาง Feature นะครับ เพราะ Library เค้าอาจไม่ครอบคลุม เช่น I2C

ตรงนี้แหล่ะครับ เริ่มมันส์ละ ถ้ายังไม่ถอดใจ แนวทางการพัฒนา
ให้โหลดเอกสาร ลำดับตามนี้

1 Data Sheet : เอาไว้ดู pin เชื่อมโยงกับ Feature ต่างๆ แบบกระชับ / พาราฯ - พิกัดทางไฟฟ้า / ข้อมูลทาง HW / มิติตัวถัง.. บลาๆ อันนี้ ประโยชน์อีกอย่าง คือ ไว้ออกแบบ PCB

2 Referrence Manual : อันนี้ สำคัญมาก เอาไว้โคด /Config bits เพื่อใช้งานอย่างจริงจังในแต่ละ Feature ที่เราต้องการ เค้าจะอธิบายไว้ ก็ละเอียดดี

สำหรับการโค้ด ฟีเจอสำคัญๆ เช่น Flash Mem - WAKE UP - ADC - DAC - I2C - DMA - ISR และอื่นๆ อาจโหลด Application Note เพิ่มได้ครับ เพื่อเข้าใจ Product เค้ามากยิ่งขึ้น มันจะมีอธิบายไว้ ทำให้ได้ Trick และแนวทางการโคดดิ้ง เพิ่มขึ้น

ยังมีอีกครับ อันนี้ เด็ด
3 Errata : อันนี้ คล้ายๆ เอกสารรวบรวม ผมมองว่า คล้ายๆ กับ จุดอ่อนไหว-ข้อควรระวัง-ข้อบกพร่อง-พร้อมวิธีการแก้ปัญหา(หลายอย่าง เค้าก็บอกตรงๆ ว่าจะไม่แก้ให้ เอากะมัน แต่ก็จริงใจดีครับ ชอบๆ) ของ Chip เบอร์ที่ใช้

เอกสารนี้(หมายถึง Errata) แต่ก่อน ผมไม่เคยสนใจเลย ไม่รู้ว่ามันคืออะไรด้วยซ้ำ จนกระทั่งวันนึง ลองโหลดมาอ่าน เลยเข้าใจเลยครับว่า เจ้านี้ เค้าละเอียดละออจริงๆ และ Chip เค้า ผ่านการ Test มาแล้วระดับนึง ไว้ใจได้ เช่น ใน Errata ของ STM8L152C6 ในโหมด I2C เค้าก็บอกไว้เลย ว่า หากไม่ คอนฟิก EV5 EV6 EV8.. ฯลฯ ต่างๆ มาตามลำดับ ก่อน Ack แรกจะเกิด จะทำให้ commination fail และเค้าก็เขียนโท่งๆ เลยว่า จะไม่แก้ปัญหาให้ แม้ในอนาคตกาล แต่ก็บอกทางออกไว้ให้ คือ ใช้ I2C คู่กันกับโหมด DMA แบบ Interrupt หรืออีกทางเลือก คือไป code เอง ว่างั้น

ซึ่งผมเอง ก่อนหน้านี้ เคยเจอปัญหานี้มาก่อน แก้อยู่เกือบ 3 วัน คิดไปต่างๆ นาๆ คิดว่า เราคงโง่เอง คงเป็นคนเดียวล่ะมั๊ง ? ผิดพลาดตรงไหนเนี่ย ทำไมมันหลับ ? :'( เลยตัดสินใจ implement ตาม RM เค้า ทีละบรรทัด จนใช้งานโหมดนี้ได้

ใช้งานผ่านมาพักใหญ่ๆ มาอ่านเจอเอกสารนี้(Errata) เฉลยข้อเท็จจริง เลยเข้าใจเลยว่า มันเป็นเช่นนั้นเอง หากผมรู้ตั้งแต่แรก คงจะไม่ต๊อแต๊ในช่วงนั้น อารมณ์ตอนนั้น อยากจะกระทืบบอร์ดทดลองเลย จริงๆ

พอได้ Tool ซึ่งเขียนขึ้นมาเอง มีข้อดีอยู่หลายอย่าง อย่างแรกคือ ไม่เหมือนใคร อย่างที่สอง-สาม นึกไม่ออก อย่างสุดท้าย
 คือ ผมพบว่า มันสามารถใช้ได้ ทั้งตระกูลนั้นเลย เช่น หากเริ่มที่ 8S ทั้งตระกูลซึ่งมีหลายสิบเบอร์-อาจถึงเป็นร้อยๆ เบอร์ มันจะใช้ได้หมด เพราะมันใช้ Referrence Manual เล่มเดียวกัน ชื่อ bits ต่างๆ จึงเหมือนกัน ต่างกันที่รายละเอียด เช่น จำนวน / ความเร็ว

ผมลองเทสแล้ว เวิร์ค แต่หากเปลี่ยนตระกูล ก็อาจต้อง Confige bits ที่แตกต่างบ้างเท่านั้น ซึ่งเมื่อจับทางเค้าได้ ก็ไม่ยาก ก็จะใช้งานได้ และที่สำคัญ ข้ามมาใช้กับ 32 bit ได้ด้วย(อ้อ จริงๆ ผมทำมาจาก 32 bits นะ แล้วเอามาปรับใช้กับ 8 bits) ปรับเพียงบางบิตเท่านั้นเอง

ผมเคยใช้ตระกูล Performance 32 bits มา ก็ทันใจ-สมชื่อดี แต่ปัจจุบัน ประทับใจตระกูล ULP ครับ เพราะได้ใช้งานแล้ว ผลการเทสหลังใช้งาน-วัดผลออกมา รู้เลยว่า ไม่ได้ช้ากว่าตระกูลอื่นๆ เลย (ที่ MIPs เท่าๆ กัน) แต่ได้โหมดประหยัดไฟ คอตๆ เพิ่มเข้ามา เช่น เดิมๆ IDLE กินไฟอยู่ที่ 6-7 mA พอผสานโหมด ULP = ULTRA LOW POWER นี้เข้าไป เช่น Halt/Active halt เหลือโดยเฉลี่ยจริง ไม่ถึง 10 uA ถ้าใช้กับพวกแบตเตอรี่ มีประโยชน์มากเลย จากนั้นก็ปลุกมัน จากภวัง (Halt) ด้วย external interrupt หรืออาจจะ AutoWakeUp ก็ได้ อันนี้ แล้วแต่ความต้องการ

ประโยชน์คอตๆ ของโหมด Halt อีกอย่าง คือ ลดความร้อนครับ ลดได้มหาศาลเลย บางเบอร์ Clock สูงๆ (พวกมากกว่า 100 MIPs) แค่ IDLE ตัวมันอุ่นๆ แล้ว อาจต้องถ่ายความร้อนลง PCB ช่วยมัน แต่หากใช้แนวทางนี้ร่วมด้วย ผมว่า.. เสถียรขึ้นด้วยนะ เร็ว+ไม่ร้อน เพราะมันได้ "งีบ" เป็นระยะๆ

อีกทางเลือก เพื่อลดความร้อน ก็ลด Clock ในช่วงเวลาที่เหมาะสม แต่ผมลองแล้ว สู้ให้ Halt ไม่ได้เลยครับ คนละเรื่อง

เหมือนกับชีวิตจริง.. พักผ่อน ทำใจกลางๆ กับทุกสิ่งที่มากระทบ ชีวิตมีสุข  ;D

//------------------------------------------------------------//
//                ::: เพิ่มเติมครับ โปรแกรมน่าใช้ :::
//------------------------------------------------------------//
Simulate ละเอียด ใช้ LTSPICE4
(ขอบคุณผู้พัฒนา Software ที่ให้ใช้ฟรีนะครับ ของฟรี ขอให้บอก)
http://www.linear.com/designtools/software/

PCB ออกแบบด้วย Diptrace ครับ(รูปล่างนี้) ฟรี.. เช่นกัน
https://diptrace.com/

สลับกับ KICAD (นานๆ ใช้ที กับบอร์ดที่อุปกรณ์เยอะมากๆ)
http://kicad-pcb.org/
https://kicad.github.io/

พวก Model 3D เพื่อใช้จำลองแผ่นปริ้น ที่นี่ครับ เพียบเลย
เพราะ อุปกรณ์ 3D บางตัวใน Software PCB.. ผมหาไม่เจอ หรือเธอไม่มี  ;D
http://www.3dcontentcentral.com/secure/download-model.aspx?catalogid=171&id=263554

พอดี นอนไม่หลับครับ
ขอบคุณที่อ่านจนจบ
ไม่รู้จะได้ประโยชน์อะไรหรือเปล่า

รูปข้างล่างนี้ เป็นส่วนประกอบจะถูกใช้ในรถยนต์ครับ ผมใช้ Chip ของ ST

ผมก็เริ่มหันมาใช้ STM32F0 แทน PIC18 PIC24 ราคาถูกดี เครื่องมือ ก็ใช้ STM32CubeMx ในการ Initial ใช้ STMStudio ในการ Debug   ผมว่าก็สะดวกดีใช้งานง่ายดี ความเสถียรของIC ต้องดูกันต่อไป  บอร์ดของท่านเป็นพวกกล่องรถซิ่งรึเปล่าครับ ใช้ STM8 ใช่ใหม? สนใจเรื่องนี้อยู่พอดี ท่านพอจะมีแหล่งข้อมูลให้ศึกษาใหม?

*

Offline TaoTao

  • ***
  • 239
    • View Profile
รูปที่เอาลง เป็น BMS ครับ เป็นตัว monitor แบต ตั้งใจว่า สักพักจะเอาลงขายที่ต่างๆ แต่คงเพิ่มเป็น 15S -16S เพื่อ support พวกรถไฟฟ้า

โจทล่าสุดของตัวนี้ คือ QUIESCENT ต่ำสุด ให้ได้ไม่เกิน 20 uA และต้องมี ADC ไม่ต่ำกว่า 20-25 Channel เพื่อรับค่า

ตามหาอยู่พักนึง ต้องขอบคุณเค้าเลย ที่มี ST FINDER สะดวกมาก ลดเวลาหาได้โข

ตอนแรก ดูที่ STM32.. ADC เยอะๆ มันก็มีนะ แต่แพง เวลาสั่งผลิตขาย คงโดน 2 เด้งครับ คือราคาชิปที่แพง+ค่าบัดกรีที่แพงขึ้น เพราะขาเหลือเยอะมากเกินไป

ส่วน IC สำเร็จรูป ไม่ต้องพูดถึงครับ หาอยู่อาทิตย์นึงได้ ไม่ใช้แน่นอน เพราะ QUIESCENT สูงมากๆ เกินไป และไม่ยืดหยุ่นเลย

โจทนี้ มาลงตัวที่ บางเบอร์ของ STM8L ครับ ADC เยอะ เทสจริง ประหยัดไฟได้มากกว่าที่คิดไว้อีก แล้วยังมี RTC ในตัวด้วย เพียงเพิ่ม LSE เข้าไป DMA ก็มี 4 channel ไว้เก็บ ADC ได้

ผมลองเทสมัน คือ ปลุกด้วย auto wake up ทั้งวัน ก็ไม่งอแงครับ อีกวัน เทสอีกรอบ ลองปลุกด้วย LSE ISR โปรแกรมตั้งเวลาได้ด้วย เพราะมี RTC  อิงกับเวลาจริง ผู้ผลิต แยกบิต วินาที นาที ชม วัน เดือน ปี ไว้ให้ด้วย งงไปเลย ;D และ prescale ได้หลายชั้น ทำให้ ตั้งเวลาได้นานดี สะดวกใช้ได้ เพราะฐานเวลาที่ 1 วินาที LSE = 32.768kHz
จับหาร 2^15 = 1 พอดี 😁

ความรู้สึกผมนะครับ เหมือนกับว่า เค้าตั้งใจทำเบอร์นี้ขึ้นมาพิเศษ เพราะ บิตต่างๆ ที่มี ควบคุมได้หลากหลายมิติ มากกว่าเบออื่น คนชอบอะไรง่ายๆ อาจไม่ชอบ แต่สำหรับผม มันยืดหยุ่นดี

แต่ ก็ อาจมีข้อเสียบ้าง คือ เข้าถึง และแก้ไข บิต ที่เกี่ยวข้องกับเวลาของ HALT ยากหน่อย ต้องทำหลายชั้น แถมเข้ารหัสอีก งมอยู่ครึ่งวัน วุ่นวายแบบนี้ ผมเลยสร้างเป็น TOOL ไว้ สรุป.. ยากแค่ครั้งเดียว ครั้งที่เหลือ ป้อน agru เท่านั้น

ถ้าสนใจ Dev Board เบอร์นี้ แบ่งไปใช้ก็ได้นะครับ มีเหลืออยู่ครับ บอร์ดใหม่ แต่เก่าเก็บนะ ซื้อต่อเค้ามา STM8L152C6T6 LQFP48 pin พร้อมจอ จากผู้ผลิตเลย ขอบอกก่อน บอร์ดนี้ บาง Feature ผู้ผลิต วางยาไว้ด้วย แสบจริงๆ 😁

STM ถ้าได้อุปกรณ์ร่วมที่ดี เช่น C พวก X7R ผมว่า ความเสถียร Chip เค้าดีนะครับ

โปรเจคนึง ผมวางไว้ในห้องเครื่องรถยน คุมการจ่ายน้ำมัน ใช้มาจะสามปีละ นิ่งสนิท ไม่เคยสร้างปัญหาอะไรแม้แต่ครั้งเดียว หลายสิบคันหรือ อาจจะร้อยคันแล้วมั๊งครับ ที่ใช้คู่ขนานกันอยู่ แต่ผมไม่ได้ทำตลาด ให้เพื่อนมันทำ รู้กันเพียงในวงแคบๆ ตัวนี้ใช้ 8S ครับ เพราะต้องการไฟ 5V ไดร์ฟ FET โดยตรง พวก STM32 ไฟมัน 3.3V เอง กระแสก็จ่ายได้ง่อยไปหน่อย ไม่เหมาะ

ส่วน ที่มาของข้อมูล ผมเอา ECU จริง ที่ยังไม่เสีย มาแงะครับ คนรู้จักเค้ารู้ ให้ผมช่วยซ่อม ช่วยแงะอีก เลยมันส์เลย ทีนี้  😁

*

Offline TaoTao

  • ***
  • 239
    • View Profile
โอ้ว STMstudio ผมพยายามลองตั้งสองรอบละ มะไหว แก่แล้วครับ ตาลาย 😵 เครื่องมือเค้า เยอะจัด

สรุป ใช้ KEIL ต่อไป 😊

งานน่าสนใจดีครับ ผมใช้ STM32F0, F4 เป็นหลัก ก่อนหน้านี้ใช้ AVR แต่เพราะการมาของ Arduino ทำให้ AVR ขาดตลาด
เลยลองเล่น STM32 ก็ตอบโจทย์ได้หมดทั้งเรื่องราคา เรื่องการใช้งาน ส่วน Tools ผมใช้ Eclipse

*

Offline TaoTao

  • ***
  • 239
    • View Profile
ครับ Arduino เค้ามาแรงจริง ด้วยความอยากรู้ ผมเสียเงิน 3 รอบ โหลด IDE เค้ามา 3 เวอร์ชั่นเลย สุดท้าย ไม่ได้ใช้ครับ มีไว้ประดับคอม เท่ๆ  ;D

ผมว่า เปิด RM จากผู้ผลิตชิป แล้วคอนฟิกบิต ยืดหยุ่นกว่ามากเลย ได้ใช้ทุกฟังชัน

อย่างเช่น การ interrupt ระบบจัดการพลังงาน ต่างๆ Arduino เข้าไม่ถึงส่วนนี้

แต่ Arduino ก็ทำให้คนทั่วไป เข้าถึง MCU ได้ง่ายขึ้น นับถือเค้าเลย

Community มันแคบซะเหลือเกินในบ้านเราสำหรับค่าย ST ผมว่าคนใช้ก็น่าจะไม่น้อยนะ แต่ส่วนใหญ่จะเทพๆ เก็บตัวไม่ค่อยออกสือ อิอิ มาๆ มาเล่นกันเยอะๆครับ E-Source ก็มีชิปให้สั่ง พอใด้ทำโปรดักส์อยู่ ทั้ง STM8 และ STM32