|
|
使用下面的例子代码,不能使SIMO和CS为低电平:4 V" C* V7 Y! G
void PSCInit(void)& X) z/ t9 C+ t+ K; h
{$ D. A, l: D Y9 y2 N
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
4 T6 \. a0 I' G5 X5 g1 q" i}2 m! h4 t* e" N
( N; V2 } ]1 x9 f
void GPIOBankPinMuxSet(void)% b. G, S, K1 @
{" L8 ~3 X4 V. H( h: O$ j, @7 R
// DRDY ------------ GPIO6[14] -- 111* d" w0 c+ L2 I
// SPI1_CLK ------------ GPIO2[13] -- 46! e8 l9 a" A0 {8 w
// SPI1_SOMI------------ GPIO2[11] -- 44% G h" l. f$ ?% w6 Q% l* G
// SPI1_SIMO------------ GPIO2[10] -- 43
5 M: i0 H, P6 A0 C // SPI1_CS2 ------------ GPIO1[0] -- 17
; S9 D A4 j* Q' k# O // SPI1_CS3 ------------ GPIO1[1] -- 183 s) w' w. B9 t- P
$ h; w: L/ S# x* j- B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);2 g' `1 t: S1 ^$ k* {( u# G/ } e
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);7 s" i; p4 Y. C( N4 c8 t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
2 k$ X X* s6 t/ d& _% j# |! c3 a4 E7 h- I' U1 [
//DRDY C3 l% y, l3 S
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY0 @7 N" c& J6 u
// CS2,CS36 ~' H* l7 z& Y0 d& v
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2& w. y& N5 E' w% Q
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3, O+ W$ p7 a) n* u. r7 P' E. K6 `
//SIMO% ]/ P t ]5 f x7 e
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
5 l2 d- b" w3 ? //SOMI
7 t R' ?5 g% k- g4 A! J GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
9 n: j- M% }4 o" h+ N: G //CLK1 B5 a6 n* E7 O8 p
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
* Z# B2 u O3 l K4 b% j; _" Y7 k, S
// LDAC
/ [' d7 i% Y' R9 Y7 T+ [ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK: \2 t3 K( e: J+ H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% b1 `1 _* C% Z% D2 A$ ~6 |
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 r+ Y8 L4 w. Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3( a) m c# h, f) L
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
! L$ C' ]- m% v1 y: F}
" q2 `" F2 l; s, r& x+ `) c
( v, i$ Y9 b3 j* A' S+ T* Yint main(void)0 {) Y6 A- L+ P' {8 F/ Z: ~4 H
{1 `7 f! C3 b- Q# l2 y+ o
// 外设使能( z- B, J4 ^, P
PSCInit();- [! p( B- w) R3 u; L) M6 y- p, R( y
% j/ y' v, L( M0 I+ B
% i. m) i$ |9 H // 管脚复用配置8 l3 _) K8 c. g$ q' I/ a1 S! D
GPIOBankPinMuxSet();: @9 H$ f+ R: H6 R# v( t& T
for(;;)/ t7 i% u" h$ w4 d
{% ^6 ~9 q d8 k; _2 P- L# Q
SET_SCLK();//时钟正常输出, ~' f" }: S! u0 X5 X8 h
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: B9 T1 j, A2 @# t6 r- L4 d GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS37 q# w5 d2 q# ]1 E) W/ R" V
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
4 F. c, U$ m1 ~- z4 v" Y" w7 \
. O; H3 @8 y" A3 i1 E delay(20);) @0 M, i" L+ g) T3 p
CLR_SCLK();* C- [5 {( A+ h, b) b( ?0 o
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3+ {! q, K" I7 A
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
& d+ ~' }2 m) Q* A$ a% G- `, e$ ] GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
" ~2 G I8 m4 T, {% Y4 L delay(20);+ ~* v8 m( P- Z8 y; {) f& D9 C' f
}
% r N+ T4 Q) P9 t0 S9 z" ~4 t' q}* a- i& d3 q6 J' S: c% m
|
|