SDK สำหรับ TESAIoT Dev Kit
คู่มืออ้างอิง API และ Tutorial (ModusToolbox)
Loading...
Searching...
No Matches
อุปกรณ์ต่อพ่วงโดยสรุป
variant ที่ใช้ได้
mtb-mpy และ mtb-only

ตารางฝั่ง C บนหน้านี้ใช้ได้กับแพ็กเกจทั้ง 2 ตัว ส่วนตารางของ MicroPython มีการกำกับไว้และแสดงเฉพาะในชุดของ mtb-mpy เพราะแพ็กเกจ mtb-only ไม่มีไฟล์ binding mod*.c มาให้เลยแม้แต่ไฟล์เดียว — ดู ตารางเทียบ variant

หน้านี้คืออะไร

หน้าสำหรับเปิดหาส่วนที่เรียกใช้ได้ของอุปกรณ์ต่อพ่วง: ทุกการเรียก ค่าที่คืนมา และ flag BSP_HAS_* ที่ตัดสินว่าสิ่งนั้นมีอยู่หรือไม่ Tutorial ต่าง ๆ อธิบาย เหตุผล ส่วนหน้านี้มีไว้เพื่อไม่ต้องกลับไปอ่านบทเหล่านั้นซ้ำอีกรอบ

มีข้อเท็จจริงเรื่องขอบเขต 2 ข้อที่กำกับทุกอย่างด้านล่างนี้ และควรระบุไว้ก่อนตารางแรก

  • แพ็กเกจนี้ส่งมอบ BSP มาเพียงชุดเดียวbsps/TARGET_KIT_PSE84_AI/ สาขา #ifdef USE_KIT_PSE84_EVAL_EPC2 ทุกจุดในซอร์สของเซนเซอร์และ GPIO คอมไพล์ทิ้งไปแล้วที่นี่ และไปถึงไม่ได้จากแพ็กเกจนี้
  • binding ของอุปกรณ์ต่อพ่วงเป็นซอร์สในเทมเพลต ไม่ใช่ archive (ไฟล์ไลบรารีแบบสแตติก .a) ที่คอมไพล์มาแล้ว ไม่มีสิ่งใดใน sdk/docs/ ที่อธิบาย binding เหล่านี้ เพราะไม่ได้อยู่ในไฟล์ .a ที่ส่งมอบตัวใดเลย นั่นคือเหตุที่หัวข้อนี้เป็น Tutorial บวกกับตารางนี้ ไม่ใช่รายการ API ที่ดึงมาจาก nm

flag ของ BSP ตามที่บอร์ดนี้ตั้งไว้

bsps/TARGET_KIT_PSE84_AI/bsp_features.mk เป็นไฟล์ของบอร์ดไฟล์เดียวในแพ็กเกจ flag ที่ไม่ได้ตั้งค่าจะมีค่าเริ่มต้นเป็น 0 ใน bento_libs/claw/common/shared/include/bsp_feature_flags.h

Flag ค่าบนบอร์ดนี้ บรรทัด ควบคุมอะไร
BSP_HAS_BMI270 1 :12 ไดรเวอร์ IMU และโมดูลย่อย bmi270
BSP_HAS_BMM350 1 :13 แมกนีโตมิเตอร์ และ bmm350_diag / bmm350_debug
BSP_HAS_DPS368 1 :16 บารอมิเตอร์
BSP_HAS_SHT40 1 :17 ความชื้นและอุณหภูมิ
BSP_HAS_RADAR 1 :18 การเรียกของเรดาร์ 3 ตัว (task BGT60TR13C บน CM55)
BSP_HAS_QWA309_BASEBOARD 1 :25 pots, buttons, rgbmatrix, header, can, shield
BSP_HAS_CAPSENSE 1 :32 CapSense 4000T ผ่าน I2C
BSP_HAS_POTENTIOMETER 1 :34 เส้นทางของโพเทนชิออมิเตอร์ผ่าน SAR
BSP_HAS_ARDUINO_HEADER 1 :58 คอนเนกเตอร์ขยายของ QWA309
ENABLE_PAGE_GPIO_RGB 1 :76 หน้า GPIO และ RGB matrix บนหน้าจอ
ENABLE_PAGE_MOTOR_CTRL 0 :77 หน้า Motor Shield v2 — ปิดไว้ตามค่าเริ่มต้น
Warning
ค่าต้องเป็น 1 หรือ 0 เปล่า ๆ และ ห้ามมีช่องว่างต่อท้าย Makefile ที่นำค่าไปใช้เทียบด้วย ifeq ($(VAR),1) ซึ่งไวต่อช่องว่าง ช่องว่างต่อท้ายจึงทำให้คุณสมบัตินั้นหายไปเงียบ ๆ โดยไม่มี error ที่ใดเลย ไฟล์นั้นระบุกฎข้อนี้ไว้เองที่ bsp_features.mk:28-30 บันทึกไว้เป็นภาคผนวก X #23 — ภาคผนวก X — กับดักและ anti-pattern

ขา (pin) บัส และแอดเดรส

ทุกอย่างบนบัสของเซนเซอร์อยู่บน SCB0 I2C ที่ P8.0 SCL / P8.1 SDA (sensor_i2c.c:99-100) SCB0 ใช้ร่วมกับ PAL ของ OPTIGA Trust M ซึ่งเป็นเหตุให้ lock ใน J1 — บัสของเซนเซอร์และ lock ของมัน ไม่ใช่สิ่งที่เลือกได้

อุปกรณ์ แอดเดรส บัส เจ้าของ Header
BMI270 IMU 0x68 SCB0 I2C CM33_NS sensor_bmi270.h:16
แมกนีโตมิเตอร์ BMM350 0x15 I3C (CYBSP_I3C_SCL/SDA) CM33_NS sensor_bmm350.h:20
บารอมิเตอร์ DPS368 0x77 SCB0 I2C CM33_NS sensor_dps368.h:16
SHT40 วัดความชื้น 0x44 SCB0 I2C CM33_NS sensor_sht40.h:17
CapSense 4000T 0x08 บัสจอแสดงผล/การสัมผัสบนบอร์ด QWA309 CM55 sensor_capsense.h:20
DFR0522 RGB matrix 0x10 บัสของคอนเนกเตอร์ header CM55 mod_rgbmatrix.c:6-13
เรดาร์ BGT60TR13C SPI CM55 tesaiot-radar/radar_task.h

ช่องสัญญาณของบอร์ดที่ไม่ได้อยู่บนบัส

สัญญาณ ขา หมายเหตุ
RGB LED สีแดง / น้ำเงิน / เขียว P20.6 / P20.5 / P20.4 TCPWM0 กลุ่ม 1 line 265 / 264 / 263 (modgpio.c:159-166)
LED1, LED2 CYBSP_USER_LED1/2 ไม่มีเส้นทาง TCPWM — ขับด้วย bit-bang เท่านั้น
ปุ่ม USER CYBSP_USER_BTN1 รายงานชื่อเป็น "SW2" (modgpio.c:53-58)
QWA309 SW4 / SW5 P17.5 / P17.7 active-low ใช้ pull-up ของ MCU (mod_qwa309_buttons.c:67-68)
โพเทนชิออมิเตอร์ตัวเดียว (sensors.pot) P15[1] SAR GPIO ช่อง 0 ผ่าน MTB HAL ปรับสเกลเทียบกับ 3.3 V (sensor_potentiometer.c:6-19)
QWA309 VR1..VR4 (pots) P15.4..P15.7 AutAnalog SAR GPIO ช่อง 4..7 — ไม่ได้ เรียงตามลำดับปุ่มหมุน
GPIO ของคอนเนกเตอร์ QWA309 P13.0, P13.3, P13.4, P13.5, P13.6, P13.7 ดัชนีเชิงตรรกะ 0..5
PWM ของคอนเนกเตอร์ QWA309 P13.3 (P13.4 = สัญญาณกลับขั้ว) TCPWM0 counter 5
UART ของคอนเนกเตอร์ QWA309 P15.0 RX / P15.1 TX SCB9, 115200 8N1
Note
P17.5 ยังเป็นขาเปิด VBUS ของ USB host ด้วย ปุ่มกับจอยสติ๊ก USB จึงใช้ร่วมกันไม่ได้บนบอร์ดฐานนี้ ต้องเลือกอย่างใดอย่างหนึ่ง buttons_hw_init() ที่เรียกก่อนจะยึดขานั้นไว้เป็นอินพุต (mod_qwa309_buttons.c:16-22)

จุดเข้าฝั่ง C (ทั้ง 2 แพ็กเกจ)

ชื่อเหล่านี้คือชื่อที่นักพัฒนาฝั่ง mtb-only เรียกโดยตรง และเป็นชื่อที่ binding ของ MicroPython เรียกอยู่ข้างใต้บน mtb-mpy

ตระกูล จุดเข้า ไฟล์
บัส sensor_i2c_init :88, sensor_i2c_lock(ms) :168, sensor_i2c_unlock :175, sensor_i2c_is_init :181, sensor_i2c_write_reg :215, sensor_i2c_read_reg :240, sensor_i2c_scan :317 sensor_i2c.c
BMI270 bmi270_read_chip_id :65, bmi270_init :195, bmi270_read_accel :218, bmi270_read_gyro :235, bmi270_read_temperature :252 sensor_bmi270.c
BMM350 bmm350_init :391, bmm350_reinit :539, bmm350_debug_read :559, bmm350_read_xyz :703, bmm350_cal_update :739, bmm350_cal_reset :766, bmm350_heading_from_xy :791, bmm350_read_heading :829, bmm350_diagnose :863 sensor_bmm350.c
DPS368 dps368_read_product_id :97, dps368_init :101, dps368_read_temperature :228, dps368_read_pressure :246, dps368_read_both :273 sensor_dps368.c
SHT40 sht40_init :40, sht40_read_temperature :107, sht40_read_humidity :111, sht40_read_both :116, sht40_read_serial :120 sensor_sht40.c
โพเทนชิออมิเตอร์ potentiometer_init :26, potentiometer_read_raw :61, potentiometer_read_percent :72, potentiometer_read_voltage :82 sensor_potentiometer.c
CapSense API เดียว สอง backend — ดู ทางแยกของ CapSense: หนึ่ง API สอง backend sensor_capsense.h
การส่งอัตโนมัติ (auto-push) sensor_auto_get_bmi270 :1498, sensor_auto_task_create :1513, sensor_auto_start :1583, sensor_auto_stop :1591, sensor_auto_is_running :1601, sensor_auto_set_rate :1605, sensor_auto_get_rate :1611, sensor_auto_set_mask :1615, sensor_auto_get_mask :1619, sensor_auto_enable :1623, sensor_auto_disable :1627, sensor_auto_get_push_count :1631 sensor_auto_task.c
การวนถามบน CM55 cm55_sensor_poll_init :34, cm55_sensor_poll_tick :37, cm55_capsense_tick :46, cm55_sensor_poll_status :49, cm55_pot_read_all :54, cm55_sensor_poll_diag :57 cm55_sensor_poll.h
เรดาร์ (CM55) tesaiot_radar_task :96, tesaiot_radar_recover_stats :114, tesaiot_radar_loop_stats :129, radar_ai_frame_next :147; สถานะ tesaiot_radar_presence_detected :72, tesaiot_radar_current_energy :77, tesaiot_radar_initialized :82 radar_task.h

ซอร์สของเซนเซอร์อยู่ที่ bento_libs/claw/common/mpy/ ส่วน cm55_sensor_poll.h อยู่ใต้ proj_cm55/modules/cm55_sensor_poll/ และซอร์สของเรดาร์อยู่ใต้ bento_libs/claw/kit-pse84-ai/libraries/tesaiot-radar/

ตารางเทียบ variant

mtb-mpy mtb-only
bento_libs/claw/common/mpy/ 53 ไฟล์ — mod*.c ทุกไฟล์ พร้อมไดรเวอร์ 19 ไฟล์ — เฉพาะไดรเวอร์ sensor_*.c/.h
bento_libs/claw/kit-tesaiot-pse84-ai/mpy/ โมดูลของชุดคิททั้ง 6 ตัว ไม่มีไดเรกทอรีนี้
โมดูล sensors, gpio มี ไม่มี — ไม่ได้คอมไพล์ชั้น binding เข้ามา
pots, buttons, rgbmatrix, header, can, shield มี ไม่มี
ไดรเวอร์เซนเซอร์ (sensor_i2c, BMI270, BMM350, DPS368, SHT40, pot) มี เรียกโดย binding มี เรียกโดยโค้ดที่เขียนเอง
sensor_auto_task มี มี — และรับผิดชอบขั้นตอนตอนบูตเพิ่มอีกหนึ่งขั้น ดู J3 — task ดันข้อมูลอัตโนมัติกับ sensor hub
การวนถามบน CM55 และ task ของเรดาร์ มี มี
Tutorial J1 — บัสของเซนเซอร์และ lock ของมัน, J2, J3 — task ดันข้อมูลอัตโนมัติกับ sensor hub, J4, J5, J6 — เรดาร์ J1 — บัสของเซนเซอร์และ lock ของมัน, J3 — task ดันข้อมูลอัตโนมัติกับ sensor hub, J6 — เรดาร์
Note
ช่องโหว่ของการจัดแพ็กเกจ ซึ่งรายงานไว้ตรง ๆ ไม่ได้กลบเกลื่อน แพ็กเกจ mtb-only ส่งมอบ sensor_capsense.c (I2C โดยตรง) มาให้ แต่ไม่ได้ส่ง sensor_capsense_ipc.c หรือ capsense.mk มาด้วย บนบอร์ด QWA309 ชิป 4000T อยู่บนบัสจอแสดงผลซึ่ง CM55 เป็นเจ้าของ backend แบบตรงจึงไปอ่านผิดบัส นักพัฒนาฝั่ง mtb-only ที่เรียก capsense_read() ในวันนี้จะได้ backend ตัวนั้น รายละเอียดและวิธีเลี่ยงอยู่ใน ทางแยกของ CapSense: หนึ่ง API สอง backend

สองการเรียกที่อาจเคยเห็นจากที่อื่น — ไม่มีทั้งคู่ที่นี่

  • sensors.snapshot() ลงทะเบียนไว้ภายใน #ifdef USE_KIT_PSE84_EVAL_EPC2 เท่านั้น (modsensors.c:1330-1332) แพ็กเกจนี้ไม่ได้ส่ง BSP ของ Eva มาด้วย การเรียกนี้จึงไม่มีอยู่บนบอร์ดใดก็ตามที่สร้างจากแพ็กเกจนี้ ห้ามเขียนโค้ดโดยอ้างอิงการเรียกนี้
  • sensors.light() ปรากฏในคลังตัวอย่างรุ่นเก่าที่อยู่นอกแพ็กเกจนี้ และไม่มีอยู่ในตารางโมดูลใดเลยในต้นไม้ไฟล์นี้ นั่นคือเอกสารที่คลาดจากของจริง (documentation drift) และหัวข้อนี้จะไม่นำต่อไป