前段时间ST推出了Value Line的STM32F750和H750两个系列,看了一下选型表,F750有LQFP144封装,正好适合我的STM32 linux板子。 " W7 `* H( b' D3 J% }& Z. _ 于是,双十一买了几片。同时,我对我的linux板做了小幅改版:将SPI Flash容量扩大到32MB并连接到F750的QSPI BANK1,添加了CAN收发器和接口,增加了两个I2C外设(温湿度传感器和气压传感器)。板子做回来后先焊了一片,调试过程还算比较顺利,现在u-boot和Linux都工作起来了,下面是系统启动log,F750速度还是相当快的(427.62 BogoMIPS,F429跑Linux只有35.844 ? v4 s, b- R0 {' t BogoMIPS),QSPI的加载速度也很给力。下一步我准备多测试几种STM32外设的Linux' y+ @1 E+ _, q N. A driver,emcraft现在的SDK比两三年前多了不少外设驱动,可以都试试看。 . l8 [1 M1 Z/ _1 x1 X ; w* _' ^8 B% ^# a2 ]" W 4 `7 ^5 p3 W) J$ n7 r# x+ E U-Boot 2010.03 (Nov 26 2018 - 21:30:21) CPU : STM32F7 (Cortex-M7) Freqs: SYSCLK=216MHz,HCLK=216MHz,PCLK1=54MHz,PCLK2=108MHz7 z5 j2 U) d0 o Board: STM32F750 Rev 1.0$ X9 W0 I/ i8 x DRAM: 64 MB6 N }4 ]7 \: r; @7 h, y In: serial% ], k* d' N6 x E; U Out: serial, a) }& u8 S5 C% @6 T Err: serial QSPI: 32 MB mapped at 0x90000000 Net: miiphy_register done. eth hw init done.9 ^3 ~) i" T& K' R$ u STM32_MAC: t; b6 n. v3 q Hit any key to stop autoboot: 0 Booting from QSPI% I# C, S! g# V# Z1 L/ J ## Booting kernel from Legacy Image at c0007fc0 ... Image Name: Linux-4.2.06 c. h4 ?2 y1 ]) M/ s( c Image Type: ARM Linux Multi-File Image (uncompressed), i) {- A9 x {* b* C Data Size: 7496295 Bytes = 7.1 MB. {' o* d6 `: `' g Load Address: c0008000 Entry Point: c0008001 Contents: Image 0: 7471388 Bytes = 7.1 MB4 H$ \ {, j9 z; f! S Image 1: 24895 Bytes = 24.3 kB0 q2 c( w! l9 _- i. T; D Verifying Checksum ... OK5 J9 ]/ T2 m$ O f ## Flattened Device Tree from multi component Image at C0007FC03 Z4 x; g8 |6 ` Booting using the fdt at 0xc0728128 Loading Multi-File Image ... OK) m0 P% b- C ] OK WARNING: legacy format multi component image overwritten Loading Device Tree to c3ff6000, end c3fff13e ... OK Starting kernel ...Booting Linux on physical CPU 0x0 Linux version 4.2.0(gcc version 4.4.1 (Sourcery G++ Lite 2010 q1-189) ) #90 Tue Dec 4 03:32:33 EST 20189 o8 F- f. K7 E2 R4 h. u: q5 i CPU: ARMv7-M [410fc271] revision 1 (ARMv7M), cr=00000000 CPU: WBA data cache, WBA instruction cache Machine model: EmCraft Systems STM32F7-SOM board Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 Kernel command line: stm32_platform=stm32f7-disco console=ttyS0,115200 panic=10 ip=169.25. L+ j4 q$ N4 e U 4.1.10:169.254.1.2:::stm32f7-disco:eth0:ff! k4 i, K" d5 J, n5 _4 ^ PID hash table entries: 256 (order: -2, 1024 bytes)' }& [6 t$ ?- d0 _8 |0 _ Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)! V0 J. x% Y. a Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)% i+ O9 G! p& B: N/ W# P Memory: 56432K/65536K available (2523K kernel code, 181K rwdata, 588K rodata, 4000K init,7 ~+ g$ d& @" ]' ^ 111K bss, 9104K reserved, 0K cma-reserved) Virtual kernel memory layout: vector : 0x00000000 - 0x00001000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) q8 `8 V# K7 `7 `" _$ K* w vmalloc : 0x00000000 - 0xffffffff (4095 MB) lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)9 G. z& K8 [- _' g7 U1 B7 V; X# T .text : 0xc0008000 - 0xc0312000 (3112 kB) .init : 0xc0312000 - 0xc06fa000 (4000 kB)3 p) ]0 w0 n, k+ a/ l, Q .data : 0xc06fa000 - 0xc07277c0 ( 182 kB)( g0 |( o2 ]+ H$ J$ y. k .bss : 0xc072811c - 0xc0743e84 ( 112 kB)6 N9 \, G5 Y, F& z% g5 k 7 I! C* Z' T o! G9 b7 }. N2 T NR_IRQS:16 nr_irqs:16 16 /interrupt-controller@40013c00: 24 External IRQs detected clocksource: arm_system_timer: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 27651335 8 ns8 ~/ S0 U, a0 K, X$ ?; @) D ARM System timer initialized as clocksource /soc/timer@40000000: STM32 clockevent driver initialized (32 bits)2 }9 J' W$ N# v9 A, m1 k7 K sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836475000000ns+ o) n* Q& z! I. O% n* A9 c) D6 H Calibrating delay loop... 427.62 BogoMIPS (lpj=2138112) pid_max: default: 4096 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)* N% p( f0 \! v8 o9 @9 ~) a Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) devtmpfs: initialized0 a1 N9 U7 ~( M& v" n5 O clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 0000 ns" `7 a& `# q$ ^' P( T# q( o2 c pinctrl core: initialized pinctrl subsystem NET: Registered protocol family 168 P: [& x/ N0 o stm32-pinctrl pin-controller: nbanks = 11) _; J; Q( u" e2 O* V stm32-pinctrl pin-controller: nfunctions = 20 stm32-pinctrl pin-controller: ngroups = 23 stm32-pinctrl pin-controller: GPIOA bank added. stm32-pinctrl pin-controller: GPIOB bank added.* X2 j% ~ @! z9 `0 i' A3 v# d stm32-pinctrl pin-controller: GPIOC bank added.9 d1 V: i) p& ]& }. Z- x/ c l0 e stm32-pinctrl pin-controller: GPIOD bank added. stm32-pinctrl pin-controller: GPIOE bank added. stm32-pinctrl pin-controller: GPIOF bank added.6 w) V0 f7 o* W4 L9 j) D0 D stm32-pinctrl pin-controller: GPIOG bank added. u7 ]7 c r# e' g stm32-pinctrl pin-controller: GPIOH bank added.9 |( s5 x$ C# ?3 \( l/ Q stm32-pinctrl pin-controller: GPIOI bank added. stm32-pinctrl pin-controller: GPIOJ bank added.4 \( o2 l% }+ x stm32-pinctrl pin-controller: GPIOK bank added. stm32-pinctrl pin-controller: Function[0 name:i2c_1, groups:1]8 f; w2 v1 k& h' ` stm32-pinctrl pin-controller: Function[1 name:i2c_2, groups:1]' N8 h0 D W% `. f stm32-pinctrl pin-controller: Function[2 name:i2c_3, groups:1]- Q! d5 x" C2 l/ S$ z7 U stm32-pinctrl pin-controller: Function[3 name:mac, groups:2] stm32-pinctrl pin-controller: Function[4 name:sdio, groups:1]* L1 c3 ^2 I: h M# F& y6 s; J7 r! } stm32-pinctrl pin-controller: Function[5 name:spi_2, groups:1]/ k7 G% c* J4 \% |) P( T4 e) k- ~ stm32-pinctrl pin-controller: Function[6 name:spi_4, groups:1]% t' c1 R! h N4 G8 A6 u) j stm32-pinctrl pin-controller: Function[7 name:spi_5, groups:1], N# w7 g, `9 B stm32-pinctrl pin-controller: Function[8 name:usart1, groups:1]% k; N0 v( u/ b8 |* } stm32-pinctrl pin-controller: Function[9 name:usart6, groups:1] stm32-pinctrl pin-controller: Function[10 name:usart7, groups:1]. z8 l# Z) j: _0 D5 x8 y7 E- S: r8 m1 M stm32-pinctrl pin-controller: Function[11 name:usb_fs, groups:1] stm32-pinctrl pin-controller: Function[12 name:usb_hs, groups:1] stm32-pinctrl pin-controller: Function[13 name:can_1, groups:1]3 i1 v+ k( E5 i/ m( r stm32-pinctrl pin-controller: Function[14 name:adc1_in0_pin, groups:1]3 N6 T$ M+ _& N$ O stm32-pinctrl pin-controller: Function[15 name:dac_out2_pin, groups:1]: b5 D$ c: n# A5 g { stm32-pinctrl pin-controller: Function[16 name:ltdc, groups:1]- U3 P t( Z$ R7 V stm32-pinctrl pin-controller: Function[17 name:sai_2, groups:1]3 @* o" S! b8 ?" w- v5 x" p stm32-pinctrl pin-controller: Function[18 name:i2c_4, groups:1]! @: g+ Y) T9 | stm32-pinctrl pin-controller: Function[19 name:gpio, groups:3] stm32-dma 40026000.dma: STM32 DMA driver registered stm32-dma 40026400.dma: STM32 DMA driver registered# W/ D3 P: j2 @+ D4 c6 ^# p5 q SCSI subsystem initialized: d) o4 h# K1 q usbcore: registered new interface driver usbfs9 H; |8 b: L* v) f usbcore: registered new interface driver hub a0 [5 _4 I4 N6 V& P3 |) h usbcore: registered new device driver usb# s4 \0 E" [+ k8 @! | soc:phy_hs supply vcc not found, using dummy regulator soc:phy_fs supply vcc not found, using dummy regulator pps_core: LinuxPPS API ver. 1 registered pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>( P! P/ p( m4 @ PTP clock support registered Advanced Linux Sound Architecture Driver Initialized.4 m8 G4 |7 i: |% C4 _( Z2 Q Bluetooth: Core ver 2.20. H1 W" X6 U; d: }# |% X NET: Registered protocol family 31) w: k) o- O) U8 C8 Y8 t Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized) a" h) x* I M$ { K Bluetooth: L2CAP socket layer initialized Bluetooth: SCO socket layer initialized clocksource: Switched to clocksource arm_system_timer NET: Registered protocol family 2 TCP established hash table entries: 1024 (order: 0, 4096 bytes)& i( ?0 s) ?: ?5 f4 M TCP bind hash table entries: 1024 (order: 0, 4096 bytes)# P% m$ D* v# O4 _ TCP: Hash tables configured (established 1024 bind 1024) UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)7 q8 b( M# F6 ~ NET: Registered protocol family 1% x0 k/ T; o7 i: P1 U( G$ U! d RPC: Registered named UNIX socket transport module., F; m/ x$ c0 j, [1 ~) k7 k: w RPC: Registered udp transport module.( y( r( K+ `' o* O. X! A6 [ RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. Power Management for STM322 u" i* P+ v p$ y futex hash table entries: 16 (order: -5, 192 bytes) jffs2: version 2.2. (NAND) (SUMMARY) 漏 2001-2006 Red Hat, Inc. fuse init (API version 7.23)$ f, N3 f3 k9 H& R) b+ n Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)& u6 p6 W$ q& \% }" j9 u; |- M, t io scheduler noop registered/ B: E: d6 I4 `2 f" [ io scheduler cfq registered (default); E$ }+ s# H0 R+ W# g k% V stm32-pinctrl pin-controller: maps: function gpio group pwms num 2 stm32-pwm pwm0: basing on TIM3.1(x16)1 C+ g# |2 a( j* c stm32-pinctrl pin-controller: maps: function ltdc group ltdc-0 num 29 stm32_lcdfb 40016800.ltdc: fb0: fb device registered successfully8 X, f# K5 F1 v) j) C0 w STM32 USART driver initialized L) {3 P8 ]: x* ]! q; X' `- ] stm32-pinctrl pin-controller: maps: function usart1 group usart1-0 num 3 40011000.serial: ttyS0 at MMIO 0x40011000 (irq = 34, base_baud = 6750000) is a stm32-usar7 D, `2 H- }! c8 B! C9 p' ~ t console [ttyS0] enabled stm32-pinctrl pin-controller: maps: function usart6 group usart6-0 num 3 40011400.serial: ttyS5 at MMIO 0x40011400 (irq = 35, base_baud = 6750000) is a stm32-usar! _& p1 w. G* {0 `& z' K t nbd: registered device at major 43 stm32-pinctrl pin-controller: maps: function dac_out2_pin group dac-0 num 2& { Q _. a7 [" m! s3 O7 p) t stm32_dac 40007400.dac: dac1: no timer assigned, DMA functionality is not available+ h$ j! X/ b- r3 ` stm32_dac 40007400.dac: created 1 character devices with MAJOR 248 2 ofpart partitions found on MTD device physmap-stm-flash.09 q C2 Z* [; f. x Creating 2 MTD partitions on "physmap-stm-flash.0":" M" X3 l# W9 n3 G7 s3 } 0x000000000000-0x000000020000 : "stm_flash_uboot" 0x000000040000-0x000000100000 : "stm_flash_unused" stm32-pinctrl pin-controller: maps: function spi_5 group spi_5-0 num 4" Q. I' L. i/ l: I stm32-spi 40015000.spi: SPI Controller 4 at 40015000,irq=38,hz=108000000 CAN device driver interface stm32-pinctrl pin-controller: maps: function can_1 group can_1-0 num 3) s) P B$ m/ F6 C/ C/ | stm32-can 40006400.can: device registered (reg=40006400, irq=31)0 S5 a: N8 h6 H' h6 B; T stm32-pinctrl pin-controller: maps: function mac group mac_rmii num 10" _3 Y& ^) ^7 ?# ]) m, s" ]9 {4 Z+ I stmmac - user ID: 0x10, Synopsys ID: 0x35 Ring mode enabled DMA HW capability register supported" I1 j; h( y* g# p& m Enhanced/Alternate descriptors Enabled extended descriptors RX Checksum Offload Engine supported (type 2)6 a: q$ Z5 o: _- ] TX Checksum insertion supported, N7 S* e# M0 ^* e0 c: P Wake-Up On Lan supported6 j4 r2 K& z. V4 G+ y( j Enable RX Mitigation via HW Watchdog Timer" B/ B5 N% M; ]" D$ v) A( A stm32-dwmac 40028000.ethernet eth0: No MDIO subnode found$ O$ n; D1 P0 A3 @ libphy: stmmac: probed eth0: PHY ID 0007c0f1 at 0 IRQ POLL (stmmac-0:00) active PPP generic driver version 2.4.2 PPP BSD Compression module registered PPP Deflate Compression module registered& j4 m8 V, u; g usbcore: registered new interface driver rt2800usb0 G1 V" O- T" |4 T& W" r9 S$ \4 i0 B stm32-pinctrl pin-controller: maps: function usb_hs group usb_hs-0 num 3 dwc2 40040000.usb: DWC OTG Controller1 Z9 G. a7 Q8 D* d dwc2 40040000.usb: new USB bus registered, assigned bus number 1, O( s6 O+ r& F5 Y0 U! d$ M4 w5 o dwc2 40040000.usb: irq 56, io mem 0x00000000 usb usb1: New USB device found, idVendor=1d6b, idProduct=00020 a; U& ^& k1 Z usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1" f4 T8 y- U0 w$ m7 Z usb usb1: Product: DWC OTG Controller usb usb1: Manufacturer: Linux 4.2.0 dwc2_hsotg1 H6 E3 A+ ~: a+ A usb usb1: SerialNumber: 40040000.usb- w' c1 O8 S: f. l( e hub 1-0:1.0: USB hub found" v: V& V) _& K0 i& k hub 1-0:1.0: 1 port detected stm32-pinctrl pin-controller: maps: function usb_fs group usb_fs-0 num 3 50000000.usb supply vusb_d not found, using dummy regulator 50000000.usb supply vusb_a not found, using dummy regulator dwc2 50000000.usb: EPs: 6, dedicated fifos, 512 entries in SPRAM# F7 C0 m0 j. L' `0 X( @( [ dwc2 50000000.usb: DCFG=0x08200000, DCTL=0x00000002, DIEPMSK=0000000b: m9 g1 J Z, h; I dwc2 50000000.usb: GAHBCFG=0x00000000, GHWCFG1=0x00000000 dwc2 50000000.usb: GRXFSIZ=0x000000a0, GNPTXFSIZ=0x004000a0- h" [( v5 m. |( p% m dwc2 50000000.usb: DPTx[1] FSize=32, StAddr=0x000000e0+ |% q1 Y0 |5 c% }' T dwc2 50000000.usb: DPTx[2] FSize=64, StAddr=0x00000100 dwc2 50000000.usb: DPTx[3] FSize=512, StAddr=0x000008003 v3 l6 w4 u3 g1 g dwc2 50000000.usb: DPTx[4] FSize=512, StAddr=0x00000a00- F6 z7 q5 i: }& J* x% O dwc2 50000000.usb: DPTx[5] FSize=512, StAddr=0x00000c00/ I! M i! l2 x% O6 o dwc2 50000000.usb: ep0-in: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x5abee5fb- v4 c! r) [3 a" m" J S dwc2 50000000.usb: ep0-out: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep1-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep1-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep2-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep2-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb$ i/ e5 c5 |7 `8 t* G+ B# r dwc2 50000000.usb: ep3-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep3-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep4-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb% w& ?% ]# R0 g- M7 Q8 F: R3 I$ Y dwc2 50000000.usb: ep4-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep5-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb" Q$ v! z8 c. x4 T( i0 S: ?2 K- \; E0 z dwc2 50000000.usb: ep5-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb8 \6 x/ S2 S: B% Q1 A dwc2 50000000.usb: DVBUSDIS=0x000017d7, DVBUSPULSE=000005b8 usbcore: registered new interface driver cdc_acm cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters usbcore: registered new interface driver uas/ B3 W9 v8 P- K5 a0 L7 t usbcore: registered new interface driver usb-storage) ?+ I9 Q) j8 J" ? g_serial gadget: Gadget Serial v2.4 g_serial gadget: g_serial ready9 A. l$ W: L1 Z/ @$ J dwc2 50000000.usb: bound driver g_serial i2c /dev entries driver stm32-pinctrl pin-controller: maps: function i2c_4 group i2c_4-0 num 3 bmp085 3-0077: Successfully initialized bmp085!! V9 N. {2 @% [/ g4 d stm32f7-i2c 40006000.i2c: I2C Controller i2c-3 at 40006000,irq=58 Driver for 1-wire Dallas network protocol. usbcore: registered new interface driver btusb stm32-pinctrl pin-controller: maps: function sdio group sdio-0 num 72 U. Y& v% o. y$ [) h/ E3 N9 s mmci-pl18x 40012c00.sdi: Got CD GPIO2 X5 E$ o% q' p; }! X mmci-pl18x 40012c00.sdi: mmc0: PL180 manf 80 rev4 at 0x40012c00 irq 37,0 (pio). T- K; O# M* d; d stm32-dma 40026400.dma: stm32_dma_of_xlate: unable to get channel 3 - was already request ed mmci-pl18x 40012c00.sdi: DMA channels RX dma1chan3, TX dma1chan3 stm32_gpio_to_irq: Event line 3 now points to fire interrupts from bank G stm32-pinctrl pin-controller: maps: function gpio group outs num 2 hidraw: raw HID events driver (C) Jiri Kosina usbcore: registered new interface driver usbhid usbhid: USB HID core driver& T1 g) a( [" l$ H' { A stm32-pinctrl pin-controller: maps: function adc1_in0_pin group adc1-0 num 2; l1 Q) V# j! ]' h( L( ?3 Q6 } stm32f4-adc 40012000.adc: registered stm32-pinctrl pin-controller: maps: function sai_2 group sai_2-0 num 5 stm32-dma 40026400.dma: stm32_dma_of_xlate: unable to get channel 4 - was already request ed1 i6 a& @, E/ z stm32-asoc-card sound: failed to find codec platform device stm32-asoc-card: probe of sound failed with error -22$ @# Q# I. y" ^ NET: Registered protocol family 17 can: controller area network core (rev 20120528 abi 9)6 `* {: [! o4 c. f% A9 o NET: Registered protocol family 29 can: raw protocol (rev 20120528)& D3 l( N8 F/ {% N5 x$ ` can: broadcast manager protocol (rev 20120528 t). T2 b; h9 ?* s5 @& E can: netlink gateway (rev 20130117) max_hops=1 Bluetooth: RFCOMM TTY layer initialized Bluetooth: RFCOMM socket layer initialized* x. s" k0 z* y! E Q) R$ l Bluetooth: RFCOMM ver 1.114 s# y( C; J8 H" ^5 | hctosys: unable to open rtc device (rtc0) vmmc: disabling ALSA device list:1 \/ G$ G, c$ n' E8 y* s No soundcards found.1 A. y7 g! C2 L: X( N6 M! i/ C9 y Freeing unused kernel memory: 4000K (c0312000 - c06fa000) init started: BusyBox v1.24.2 (2018-11-22 20:35:58 EST) / # amixer: Mixer attach default error: No such file or directory3 d# }1 A+ z; x& C2 h6 n. P( _4 { stm32-dwmac 40028000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx / # free: a8 C, Y6 _* o7 a total used free shared buffers cached Mem: 60432 8140 52292 0 0 4792& l, u/ H ^. t9 Q -/+ buffers/cache: 3348 570840 s& E& B; d$ H3 j8 l, C( } / # m6 j7 _0 Q; V1 z: d5 @ 3 r- r- d- Y+ S |
刘氓兔的杂谈【001】-片上USB 高速PHY
【合集】STM32F7教程、资料大集合
基于STM32F746G-Discover的扩展电路板
F769 Discovery实现播放U盘音乐的播放器
STM32 VS Code Extension (在Ubuntu上开发STM32,ST官方vscode插件使用指南)
STM32F765@216MHz跑NES模拟器【代码】【视频】
基于STM32F7实现ADC软件触发+轮询采集
基于STM32F7进行ADC采集解决更新问题
基于STM32F7使用定时器经验分享
实现基于STM32F7中周期采集