SDK สำหรับ TESAIoT Dev Kit
คู่มืออ้างอิง API และ Tutorial (MTB & µPython)
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/

MicroPython — โมดูล sensors

ลงทะเบียนที่ modsensors.c:1372 การอ่านทุกครั้ง binding จะครอบด้วย sensor_i2c_lock(100) / sensor_i2c_unlock() ให้เอง จึงไม่ต้องจับ lock เองจากฝั่ง Python เลย

การเรียก คืนค่า ตัวการทำงาน gate
sensors.init() bool — True เมื่อไดรเวอร์ย่อยขึ้นครบทุกตัว และ OSError หากตัวบัสเองล้มเหลว modsensors.c:523 เสมอ
sensors.scan() list[int] ของแอดเดรส 7 บิตที่ตอบกลับมา modsensors.c:782 เสมอ
sensors.read_all() dict — เซนเซอร์ที่ไม่มีจะไม่มีคีย์ ไม่ใช่ค่า None modsensors.c:807 เสมอ
sensors.push() bool — True หากมีข้อมูลส่งไปยัง CM55 modsensors.c:911 เสมอ
sensors.live_push(interval_ms=200) ไม่คืนค่ากลับมาเลย และเกิด KeyboardInterrupt เมื่อกด Ctrl-C จำกัดช่วงไว้ที่ 50..5000 ms modsensors.c:1060 เสมอ
sensors.auto() True — บอกว่า task กำลังทำงานอยู่หรือไม่ modsensors.c:1173 เสมอ
sensors.auto(bool) None — เริ่ม / หยุด modsensors.c:1173 เสมอ
sensors.auto(name, bool) None และเกิด ValueError เมื่อชื่อไม่รู้จัก modsensors.c:1214-1224 เสมอ
sensors.auto_rate(ms) None จำกัดช่วงไว้ที่ 20..5000 ms modsensors.c:1234 เสมอ
sensors.auto_status() dict ที่มี running, rate_ms, push_count, mask modsensors.c:1246 เสมอ
sensors.bmm350_diag() dict 12 คีย์: step, init, att, s_init, s_en, pres, forced, wr_st, wr_ev, rd_st, rd_ev, id modsensors.c:1269 BSP_HAS_BMM350
sensors.bmm350_debug() None — พิมพ์ค่าใน register ออกมาทั้งชุด modsensors.c:1315 BSP_HAS_BMM350
sensors.radar() dict ที่มี initialized, presence, energy modsensors.c:306 BSP_HAS_RADAR
sensors.radar_range() dict ที่มี distance_m, peak_db, resolution_m, target, seq modsensors.c:410 BSP_HAS_RADAR
sensors.radar_config(threshold_db) None ค่า 0.0 จะเก็บค่าฐานใหม่ นอกนั้นรับ 0.1..60.0 มิฉะนั้นเกิด ValueError modsensors.c:444 BSP_HAS_RADAR

ชื่อที่ sensors.auto(name, bool) รับได้: bmi270, dps368, sht40, bmm350, capsense, pot (modsensors.c:1218-1223)

MicroPython — โมดูลย่อยของเซนเซอร์

ผูกเข้าไปใน dict ของ sensors ที่ modsensors.c:1341-1362

การเรียก คืนค่า ตัวการทำงาน gate
sensors.bmi270.acceleration() tuple 3 ค่าเป็น float หน่วย m/s² modsensors.c:159 เสมอ
sensors.bmi270.gyroscope() tuple 3 ค่าเป็น float หน่วย deg/s modsensors.c:182 เสมอ
sensors.bmi270.temperature() float °C — อุณหภูมิของตัวชิป (die) ไม่ใช่อุณหภูมิห้อง modsensors.c:205 เสมอ
sensors.bmi270.motion() tuple 6 ค่าภายใต้ lock ครั้งเดียว — เป็น snapshot ที่สอดคล้องกัน modsensors.c:230 เสมอ
sensors.bmi270.chip_id() int โดยค่า 0x24 คือปกติ modsensors.c:254 เสมอ
sensors.dps368.pressure() float หน่วย hPa modsensors_dps368.c:34 BSP_HAS_DPS368
sensors.dps368.temperature() float °C modsensors_dps368.c:47 BSP_HAS_DPS368
sensors.dps368.altitude() float หน่วย m modsensors_dps368.c:60 BSP_HAS_DPS368
sensors.dps368.pressure_temperature() tuple 2 ค่า modsensors_dps368.c:77 BSP_HAS_DPS368
sensors.sht40.temperature() float °C modsensors_sht40.c:21 BSP_HAS_SHT40
sensors.sht40.humidity() float หน่วย RH modsensors_sht40.c:31 BSP_HAS_SHT40
sensors.sht40.temperature_humidity() tuple 2 ค่า modsensors_sht40.c:41 BSP_HAS_SHT40
sensors.bmm350.magnetic() tuple 3 ค่า หน่วย µT modsensors_bmm350.c:20 BSP_HAS_BMM350
sensors.bmm350.heading() float 0..360 โดย 0 = ทิศเหนือ modsensors_bmm350.c:33 BSP_HAS_BMM350
sensors.bmm350.chip_id() int modsensors_bmm350.c:43 BSP_HAS_BMM350
sensors.bmm350.cal_reset() None modsensors_bmm350.c:54 BSP_HAS_BMM350
sensors.bmm350.cal_status() dict 3 คีย์ modsensors_bmm350.c:62 BSP_HAS_BMM350
sensors.capsense.read() dict ที่มี btn0, btn1, slider modsensors_capsense.c:37 BSP_HAS_CAPSENSE
sensors.capsense.buttons() tuple 2 ค่าเป็น bool modsensors_capsense.c:65 BSP_HAS_CAPSENSE
sensors.capsense.slider() int 0..100 modsensors_capsense.c:85 BSP_HAS_CAPSENSE
sensors.pot.read() int 0..65535 modsensors_potentiometer.c:42 BSP_HAS_POTENTIOMETER
sensors.pot.percent() float 0..100 modsensors_potentiometer.c:56 BSP_HAS_POTENTIOMETER
sensors.pot.voltage() float 0..3.3 modsensors_potentiometer.c:72 BSP_HAS_POTENTIOMETER
Note
sensors.pot กับโมดูล pots เป็น คนละปุ่มหมุนกัน sensors.pot คือโพเทนชิออมิเตอร์ตัวเดียวบน P15[1] ที่อ่านผ่าน SAR ของ MTB HAL (sensor_potentiometer.c:6) ส่วน pots.read(n) คือ VR1..VR4 บน P15.4..P15.7 ที่อ่านตรงจาก register ผลลัพธ์ของ AutAnalog flag BSP_HAS_POTENTIOMETER=1 ตัวเดียวเปิดใช้งานทั้ง 2 อย่าง (Makefile.micropython:547-549, :588)

MicroPython — โมดูล gpio

ลงทะเบียนที่ modgpio.c:678

การเรียก คืนค่า ตัวการทำงาน
gpio.led(n) gpio.LED และเกิด ValueError เมื่อค่าอยู่นอกช่วง modgpio.c:587
gpio.button(n) gpio.Button และเกิด ValueError เมื่อค่าอยู่นอกช่วง modgpio.c:600
gpio.num_leds() int modgpio.c:613
gpio.num_buttons() int modgpio.c:619
gpio.board_info() dict ที่มี name, leds, buttons, led_names, btn_names modgpio.c:625
gpio.LED / gpio.Button ตัวชนิดข้อมูล สำหรับใช้กับ isinstance modgpio.c:668-669
led.on() / .off() / .toggle() None — แต่ละตัวปล่อย PWM ที่ค้างอยู่ก่อน แล้วจึงขับขา แล้วจึงแจ้ง CM55 modgpio.c:288 / :299 / :310
led.value() / led.value(v) อ่านค่ากลับเป็น int / None modgpio.c:320
led.name() str modgpio.c:344
led.brightness(pct) None — ใช้ TCPWM ของฮาร์ดแวร์บนขาที่มีเส้นทางรองรับ ถ้าไม่มีจะเป็นพัลส์แบบบล็อก 12 ms modgpio.c:375
led.hold(pct, ms=500) None — ส่งพัลส์ซ้ำเป็นเวลา ms โดยยังกด Ctrl-C ได้ modgpio.c:444
led.duty() int — เปอร์เซ็นต์ล่าสุดที่ร้องขอไว้ modgpio.c:485
btn.is_pressed() bool แบบ active-low modgpio.c:520
btn.value() int modgpio.c:529
btn.name() str modgpio.c:536

ดัชนีของ LED มาจาก led_table[] (modgpio.c:38-50): 0 LED1, 1 LED2, 2 RGB_RED, 3 RGB_BLUE, 4 RGB_GREEN มีปุ่มอยู่หนึ่งปุ่ม ดัชนี 0 ชื่อ "SW2" (modgpio.c:53-58) ส่วน gpio.board_info()['name'] คือ "PSoC Edge AI Dev Kit" (modgpio.c:61-65)

MicroPython — โมดูลของบอร์ดฐาน QWA309

ทั้ง 5 โมดูลอยู่ภายใน #if BSP_HAS_QWA309_BASEBOARD ซึ่งบอร์ดนี้ตั้งเป็น 1

การเรียก คืนค่า ตัวการทำงาน
pots.read(n) int 0..4095 และเกิด ValueError เมื่ออยู่นอกช่วง 0..3 mod_qwa309_pots.c:103
pots.read_all() tuple 4 ค่าเป็น int mod_qwa309_pots.c:110
pots.norm(n) float 0.0..1.0 mod_qwa309_pots.c:121
pots.ready() bool — ทุกช่องให้ผลลัพธ์ในการสแกนรอบล่าสุด mod_qwa309_pots.c:129
pots.count() 4 mod_qwa309_pots.c:137
buttons.read() tuple 2 ค่าเป็น bool mod_qwa309_buttons.c:105
buttons.pressed(n) bool mod_qwa309_buttons.c:117
buttons.name(n) str — "SW4" หรือ "SW5" mod_qwa309_buttons.c:131
buttons.count() 2 mod_qwa309_buttons.c:144
rgbmatrix.clear() None mod_rgbmatrix.c:116
rgbmatrix.fill(color) None mod_rgbmatrix.c:124
rgbmatrix.pixel(x, y, color) None โดย x 0..15, y 0..7 mod_rgbmatrix.c:137
rgbmatrix.blit(buf) None เฟรมขนาด 64 ไบต์ แบบ 4bpp mod_rgbmatrix.c:166
rgbmatrix.score(value, color=RED) None รับ 0..9999 mod_rgbmatrix.c:185
rgbmatrix.bar(value, max=5, color=GREEN) None mod_rgbmatrix.c:205
rgbmatrix.scroll(text, color=WHITE, ms=80) None สตริงว่างจะหยุดข้อความเลื่อน mod_rgbmatrix.c:232
header.gpio_out(idx, v) None mod_qwa309_header.c:129
header.gpio_in(idx) int mod_qwa309_header.c:146
header.name(idx) str mod_qwa309_header.c:162
header.pwm(pin, duty_pct, freq_hz) None mod_qwa309_header.c:278
header.uart_write(bytes) None mod_qwa309_header.c:408
header.uart_any() int mod_qwa309_header.c:424
header.uart_read(n) bytes mod_qwa309_header.c:435

ค่าคงที่สีของ rgbmatrix ตั้งแต่ OFF ถึง WHITE = 0..7 (mod_rgbmatrix.c:275-282): OFF, RED, GREEN, YELLOW, BLUE, PURPLE, CYAN, WHITE

ยังมีอีก 2 โมดูลที่ส่งมอบมาภายใต้ flag เดียวกัน และอยู่ข้างเคียงอุปกรณ์ต่อพ่วงมากกว่าจะเป็นอุปกรณ์ต่อพ่วงเอง ได้แก่ can (modcan.c:479init, send, recv, deinit, stats) และ shield.motor_v2 (mod_shield_motor_v2.c:313speed, run, stop_all, stepper_attach, stepper_detach, stepper_rpm, stepper_step, stepper_stop, stepper_release) ส่วนหน้า Motor Shield ที่คู่กับ 2 โมดูลนี้ปิดไว้ตามค่าเริ่มต้น (bsp_features.mk:77) ดู J5 — บอร์ดฐาน QWA309: pot ปุ่ม RGB matrix และ header

ตารางเทียบ 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) และหัวข้อนี้จะไม่นำต่อไป