|
使用下面的例子代码,不能使SIMO和CS为低电平:8 ~, F' X2 }! n- B
void PSCInit(void)6 ?7 t/ G2 w# J2 `7 Y @6 j
{/ B5 F5 k+ N, C. P# x
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
* F# @! f/ \8 L}! L6 z. K3 E* Y- t2 V* b
" c. k V8 D! f" H/ C% q7 `
void GPIOBankPinMuxSet(void), v; q9 f7 v! u
{
& e% Q4 {9 {" o! e* {; b) b0 |# F // DRDY ------------ GPIO6[14] -- 111
2 b: o! z4 n( a# G4 H // SPI1_CLK ------------ GPIO2[13] -- 46
5 E6 E% U" Y2 S8 | // SPI1_SOMI------------ GPIO2[11] -- 444 g, S c% F5 d/ O) @: P' H
// SPI1_SIMO------------ GPIO2[10] -- 439 m0 W3 t% s: U: B! O0 m
// SPI1_CS2 ------------ GPIO1[0] -- 17
/ W* m4 @+ \- C // SPI1_CS3 ------------ GPIO1[1] -- 18
) t' A# | q7 k; a2 L$ Z4 i( n
4 Q; s& n2 `9 Z0 g. d2 ^ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) f) `0 U& L1 m4 g" q, [
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);, R& P/ d1 q. l7 Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
- E \$ Y/ I4 T; g0 A% n7 V+ k3 N
//DRDY
/ Q9 W* U& W8 f3 }+ M- v GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY% \1 [5 W9 C5 @0 N
// CS2,CS3/ _* v0 H. I. D' Q
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
+ u0 H8 G! s, l; q" ~9 x4 ~ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
- L( D% F! a& ~! m! {1 Q //SIMO
2 P! B9 | g8 m GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
) v& T+ l; X' e. n //SOMI: A$ H5 n1 \! c% G" Z1 l
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
, U9 G* W. L( q3 D //CLK; v; @ p. h. b% K0 k( n
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK% j2 J5 z0 K4 E; X V+ ]& o
# {2 d! t9 q( L% Y
// LDAC
3 z* M2 i* S* q' Y1 R GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK' R) j9 b6 g. ?9 P, k
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ [; a& s- e; v& u) h3 x# Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2) B2 ~! {9 V- S% J2 Z( G
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 S; d2 r7 u y2 W' _% F GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY, s8 F* Q2 @) k
}" o' A) i+ n7 e9 f& {
" ^) L2 a) d- Z8 F
int main(void)
* Y2 Y0 {! e/ o0 ?{
! a1 x- k# ~9 ~& ?) n8 P // 外设使能/ [" W! b `2 [2 Q6 X
PSCInit();
: E+ j* j: j# s0 A7 i
6 H5 E5 F" E. J P4 L$ I$ x 2 P$ R' `. N& u0 m' F4 ^
// 管脚复用配置7 ?: J* m3 a1 T8 l1 O
GPIOBankPinMuxSet();
' g w) y" {8 }! @/ i0 r p) P, |5 B for(;;)- k4 V) @, v$ Q: e* f
{
" n( h+ k/ l j! f5 H4 O SET_SCLK();//时钟正常输出
0 o- b& `% s. v! t: X GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- S) z2 B0 }# _ W# P GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS35 R/ ^( f$ g9 u! q1 I- Z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
% q$ @* z) S6 l9 S
3 N5 U. ?9 {. I( S delay(20);( T1 F: T `! i' W# {2 ?" `$ u
CLR_SCLK();" o6 o a; g7 W5 K
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 d& C4 a# { s7 a. d/ n/ Q" ^
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3. ~) F6 J) \* J, ^: }. K2 S( T8 n) j, R
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: L9 x6 u' X0 b delay(20);* e2 |+ c; c. C, W5 P' J+ Z# \
}7 T7 F! j$ U. w* J! V
}
, b% x+ `7 O3 Q# M5 I; ?9 G |
|